PricePilot Documenation

Overview

PricePilot is an app from MindKlip that allows Shopify merchants to synchronize their ReCharge subscription prices with the current product price in Shopify and automatically reserve stock for their subscribers. This ensures that customers are always charged the correct price, have guaranteed stock availability, and helps to reduce churn.

In addition to syncing prices and reserving stock, PricePilot also provides configurable options such as a lookahead period, grace period, reservation days, and product eligibility for reservations.

Requirements

To use PricePilot, you will need the following:

  • A Shopify account
  • A ReCharge account
  • API key for ReCharge with the following permissions:
    • Orders: read access
    • Discounts: read access
    • Subscriptions: read and write access
    • Customers: read access
    • Products: read access
    • Async Batches: read and write access
  • Optional: A Klaviyo account and your Klaviyo private API key to enable the subscription price notifications.
    • Events: full access permission required

Please note that if you do not have the correct permissions set up for your ReCharge API key, PricePilot may not work properly.

Installation

To install PricePilot, follow these steps:

  1. Visit the PricePilot page on the Shopify app store.
  2. Click on the "Add app" button to begin installation.
  3. Follow the prompts to complete the installation process.
  4. After installation is complete, navigate to the PricePilot app settings to configure your sync and reservation options.

Configuration

Once you have installed PricePilot, you can configure your sync and reservation options. To do this, follow these steps:

  1. Navigate to the PricePilot app in Shopify.
  2. Enter your ReCharge API key.
  3. Set your sync options, including the lookahead period, grace period, and lowest price guarantee.
    • Lookahead period: Number of days in the future that PricePilot should look for upcoming subscription renewals to price sync.
    • Grace period: PricePilot will not update prices for subscriptions within the grace period. Useful to prevent surprise last-minute price changes.
    • Guarantee lowest website price: Optionally, if you want to ensure a customer always gets the lowest price available on your website (ignores the grace period for price decreases). Useful when offering a best price guarantee.
  4. Configure your reservation options.
    • Reservation days: Set the number of days in the future that PricePilot should reserve stock for your subscribers.
    • If you would like to select which products should be eligible for reservations, navigate to the Products section of PricePilot.
      • Select Apply to all products in the store to select all products up to your plan limit.
      • Select Manually upload a CSV of products to upload a list of products that should be eligible for reservation (Pro plan or higher required). Uploaded CSV should have a column titled Handle to identify the parent product. This is the same format used by Shopify product exports.
  5. (Optional) If you want to send subscription price change events to Klaviyo, navigate to Integrations and enter your Klaviyo private API key.

ReCharge API - Go to your ReCharge admin interface and navigate to Apps > API Keys. You can follow these directions.

Klaviyo API Key - To create your private API key, go to the [Private API Keys section](https://www.k

Klaviyo example event payload
{
    "subscription_id": 330591415,
    "variant_id": "44391650165056",
    "new_price": 540,
    "one_time_price": 600",
    "original_price": 100,
    "price_difference" 440,
    "price_direction": "increase",
    "original_charge": {
        "id": 757001331,
        "address_id": 115494230,
        "analytics_data": {
            "utm_params": []
        },
        "billing_address": {
            "address1": "21 Fake St",
            "address2": null,
            "city": "Pleasantville",
            "company": null,
            "country_code": "AU",
            "first_name": "John",
            "last_name": "Smith",
            "phone": null,
            "province": "New South Wales",
            "zip": "2000"
        },
        "client_details": {
            "browser_ip": null,
            "user_agent": null
        },
        "created_at": "2023-02-17T05:08:00+00:00",
        "currency": "AUD",
        "customer": {
            "id": 105387847,
            "email": "john.smith@mindklip.io",
            "external_customer_id": {
                "ecommerce": "6780396437824"
            },
            "hash": "717d9e2a1ae3b4ac950d3b675bc1e3"
        },
        "discounts": [
            {
                "id": 138289035,
                "code": "TEST",
                "value": 20,
                "value_type": "percentage"
            }
        ],
        "error": null,
        "error_type": null,
        "external_order_id": {
            "ecommerce": null
        },
        "external_transaction_id": {
            "payment_processor": null
        },
        "has_uncommitted_changes": false,
        "line_items": [
            {
                "purchase_item_id": 330591415,
                "external_product_id": {
                    "ecommerce": "8133363007808"
                },
                "external_variant_id": {
                    "ecommerce": "44391650165056"
                },
                "grams": 1000,
                "handle": null,
                "images": {},
                "properties": [
                    {
                        "name": "attribution",
                        "value": "rc_direct_checkout_link"
                    }
                ],
                "purchase_item_type": "subscription",
                "quantity": 1,
                "sku": "SKU-91911",
                "tax_due": "0.00",
                "tax_lines": [],
                "taxable": true,
                "taxable_amount": "100.00",
                "title": "Blue Hamburger",
                "total_price": "100.00",
                "unit_price": "100.00",
                "unit_price_includes_tax": false,
                "variant_title": null
            }
        ],
        "note": null,
        "order_attributes": [],
        "orders_count": 0,
        "payment_processor": "shopify_payments",
        "processed_at": null,
        "retry_date": null,
        "scheduled_at": "2023-03-03",
        "shipping_address": {
            "address1": "21 Fake St",
            "address2": null,
            "city": "Pleasantville",
            "company": null,
            "country_code": "AU",
            "first_name": "John",
            "last_name": "Smith",
            "phone": null,
            "province": "New South Wales",
            "zip": "2000"
        },
        "shipping_lines": [
            {
                "code": "Standard",
                "price": "0.00",
                "source": "shopify",
                "tax_lines": [],
                "taxable": false,
                "title": "Standard"
            }
        ],
        "status": "queued",
        "subtotal_price": "80.00",
        "tags": "Subscription, Subscription Recurring Order",
        "tax_lines": [],
        "taxable": true,
        "total_discounts": "20.00",
        "total_duties": "0.00",
        "total_line_items_price": "100.00",
        "total_price": "80.00",
        "total_refunds": "0.00",
        "total_tax": "0.00",
        "total_weight_grams": 1000,
        "type": "recurring",
        "updated_at": "2023-03-01T06:05:36+00:00"
    },
    "original_line_item": {
        "purchase_item_id": 330591415,
        "external_product_id": {
            "ecommerce": "8133363007808"
        },
        "external_variant_id": {
            "ecommerce": "44391650165056"
        },
        "grams": 1000,
        "handle": null,
        "images": {},
        "properties": [
            {
                "name": "attribution",
                "value": "rc_direct_checkout_link"
            }
        ],
        "purchase_item_type": "subscription",
        "quantity": 1,
        "sku": "SKU-91911",
        "tax_due": "0.00",
        "tax_lines": [],
        "taxable": true,
        "taxable_amount": "100.00",
        "title": "Blue Hamburger",
        "total_price": "100.00",
        "unit_price": "100.00",
        "unit_price_includes_tax": false,
        "variant_title": null
    }
}