This guide helps technical partners decide how to integrate with Skio, what to build for their product category, and how to prepare for launch. Many compatible apps already work with Skio through their Shopify integration. Products that need subscription data, lifecycle events, or management actions connect through Skio's APIs and webhooks.
Before you start
Developer access: Building an integration requires engineering resources familiar with GraphQL, webhooks, and Shopify's APIs.
A test store: You'll need a Shopify development store with Skio installed. See the test account section below.
A merchant API key: Skio uses store-specific API keys, so each merchant generates a key for your integration.
How do Skio integrations work?
Shopify creates the subscription contract at checkout and generates renewal orders when billing succeeds. Skio manages everything around that: scheduling, the subscriber experience, retention workflows, and operational tooling.
That gives you two integration surfaces:
Shopify: Orders, customers, fulfillment, and other commerce data your app already handles. Apps that consume Shopify orders can often process Skio renewals with no extra work.
Skio: Subscription data, lifecycle events, and management actions, such as reading subscription state or changing a future renewal.
Which integration path should I use?
Pick the path that matches what your product needs to do. You can combine paths. For example, a helpdesk might use GraphQL for agent actions and webhooks for ticket creation.
If you need to... | Use |
|---|---|
Process orders, fulfillment, or customer data | Your existing Shopify integration |
Receive lifecycle events and profile updates | |
Receive subscription change notifications | Native webhooks or Custom Webhook Integration, depending on the events you need |
Read or modify subscriptions in real time | Skio GraphQL API |
Ingest historical data for analytics | BigQuery (or the REST export API for bulk extraction) |
Build subscription selection and checkout experiences | Shopify selling plans and Skio storefront resources |
An existing Recharge integration doesn't carry over. You'll need a separate Skio implementation that maps your authentication, objects, queries, and mutations to Skio's schema. Skio's data model mirrors Shopify subscription objects and exposes Shopify identifiers for supported records.
How do I authenticate with the Skio API?
Skio uses store-specific API keys sent in the request header. You don't need to build an OAuth flow.
Step 1: Generate an API key
In the left-hand menu of the Skio Dashboard, go to API & Integrations > API Keys.
Enter a name for the key, then click Generate API key.
Copy the key and store it securely.
The key is only shown once. If it's lost, delete it and generate a new one.
Step 2: Send the key with your requests
Include the key in the authorization header with the API prefix:
authorization: API <key>Send requests to https://graphql.skio.com/v1/graphql.
Store credentials per merchant store, encrypt them at rest, keep them server-side, and support key rotation.
What are the GraphQL API limits?
The GraphQL API supports filtering, ordering, and nested selection for targeted subscription reads and management actions. The platformId field maps Skio records to their Shopify global IDs.
Limit | Value |
|---|---|
Query depth | 4 nested levels |
Query size | 100 nodes per request |
Request rate | 2,000 requests per minute per API token |
Select only the fields you need, paginate results, and handle throttling with bounded retries and backoff.
How do I set up a test account?
Install Skio on a Shopify development store, then send the shop URL to the Skio team to convert it into a test account.
Create test subscriptions through a supported subscription checkout or creation flow. Then test the full lifecycle: renewal, cancellation, and every management action your product supports.
Creating an order through the Shopify Admin API or a bulk import doesn't create a subscription contract.
Which webhook interface should I use?
Use the Custom Webhook Integration for marketing automation and profile sync. Use native webhooks for basic subscription change notifications. The two interfaces have different schemas and event catalogs, so they aren't interchangeable.
Native webhooks | Custom Webhook Integration | |
|---|---|---|
Where to set up | API & Integrations > API Keys > Webhooks | API & Integrations > Integrations (Skio enables the card on request) |
Primary use | Subscription change notifications | Lifecycle automation and customer profile sync |
Payload |
|
|
Verification | Match | Validate |
Profile backfill | Not available | Available when profile sync is on |
The Custom Webhook Integration retries failed deliveries with exponential backoff, limits concurrent deliveries, and supports per-event test sends.
Acknowledge requests quickly, persist accepted work, and process downstream updates asynchronously. Add duplicate detection before triggering side effects. If you can't find a delivery identifier in live requests, work out a deduplication strategy with the Skio team.
What should I build for my product category?
Each partner category has a recommended integration path and a set of things to validate. Find your category below.
Email, SMS, and marketing automation
Use the Custom Webhook Integration to map Skio events to triggers in your platform. It follows the same event model as Skio's Klaviyo integration. Turn on profile sync if your segmentation or personalization needs customer-level subscription properties.
Event group | Example use cases |
|---|---|
Subscription created or renewed | Welcome flows, renewal confirmations, subscriber engagement |
Subscription paused, unpaused, or reactivated | Journey updates and reactivation messaging |
Subscription cancelled | Cancellation confirmations and win-back flows using cancellation reasons |
Upcoming billing | Renewal reminders based on the configured lead time |
Failed billing or card expiry | Payment failure and payment update notifications |
Subscription line changes | Product-specific messaging and recommendations |
Map event properties and customer fields explicitly, preserve data types, and handle missing values. Query GraphQL when a workflow needs data that isn't in the payload.
Your merchant setup instructions should cover how to:
Request activation of the Custom Webhook Integration.
Configure your endpoint.
Turn on profile sync, if required.
Select events and send test payloads.
Run a profile backfill.
Size your ingestion to handle a backfill of all existing customers, and define how email changes reconcile with existing profiles.
Helpdesk and CX platforms
Build a subscription view in the agent workspace, backed by the GraphQL API. Show the customer's subscriptions, available actions, and a link to the subscription in Skio.
When a ticket opens, pull the subscription status, next billing date, frequency, products, quantities, and recent billing history. Use on-demand reads to keep the view current, and refresh state before executing any change. Look up customers by email first, then store their Skio and Shopify identifiers.
For your first release, scope agent actions to supported operations like:
Skip: Skip the next order.
Reschedule: Change the next billing date or frequency.
Swap: Swap a product.
Status changes: Pause, resume, or cancel a subscription, capturing cancellation reasons where supported.
Show the confirmed result after each action, and log the agent, change, and outcome in the ticket history. If one helpdesk account serves multiple stores, verify store routing before running any mutation.
Loyalty and referral platforms
Your existing Shopify integration likely covers points on renewal orders, referral attribution, and tier progression. A direct Skio integration adds subscription-specific rewards.
Capability | How to implement it |
|---|---|
Redeem against a future renewal | Apply the reward through a supported subscription operation, and validate discount eligibility, duration, and renewal totals |
Show loyalty content in the Customer Portal | Use Skio custom extensions (HTML, CSS, and JavaScript components) |
Award rewards for subscription activity | Subscribe to lifecycle events and keep a ledger that prevents duplicate awards |
Validate eligibility rules against duplicate deliveries, cancellations, and refunds. Customer-facing actions must confirm the authenticated customer owns the subscription being changed. Store stable identifiers alongside email so account changes don't create duplicate members.
Data analytics and attribution
Use BigQuery for recurring warehouse ingestion and historical analysis. Reserve GraphQL for targeted lookups, not as your main ingestion pipeline.
The merchant turns on BigQuery in API & Integrations > Integrations and grants your user, group, or service account read access.
Inspect the available tables and schema before defining your data model.
Join Skio records to Shopify data using
platformId.Check update timestamps and deletion behavior before building incremental processing.
Reconcile source totals and account for late-arriving changes.
Publish your definitions of active subscribers, churn, LTV, and cohort retention so merchants understand why your numbers may differ from the Skio Dashboard. Validate against a real pilot merchant's data, since a new test store won't reflect a mature subscription program.
Storefront, mobile, and post-purchase
Use Shopify selling plans and storefront APIs for subscription selection and checkout. For mobile apps, custom carts, and product page experiments, confirm that:
Selling plans persist: The selected plan carries through the cart.
Subscriptions are created: Checkout completes and creates the subscription.
Customers can manage it: The subscriber can access and manage the subscription afterward.
Adding a product to the current Shopify order doesn't update the subscription. Offers that change future products, quantities, or frequency need the matching subscription operation.
Payments, fraud, and order services
Order-based services often work through the existing Shopify integration. Test initial purchases and renewals separately.
Workflow | What to verify |
|---|---|
Fulfillment and order processing | Renewal orders enter your workflow with the required fields |
Fraud and chargebacks | Renewal orders provide the signals your service needs |
Package protection | Coverage, eligibility, and charges work on renewals |
Order editing | Edits affect only the intended order |
Checkout extensions | Your feature supports the subscription checkout surface |
Failed-payment recovery | Billing access and retry coordination with Skio are explicitly supported |
Order access doesn't mean you can retry failed billing. Scope failed-payment recovery with the Skio team before building it. For notifications, the Custom Webhook Integration sends a
billingAttemptFailedevent with failure details.
Production best practices
Apply these controls across your integration before you go live.
Area | Guidance |
|---|---|
Tenant isolation | Tie credentials, webhook secrets, and datasets to each merchant store. Verify routing before accessing data or running actions. |
Customer identity | Store Skio and Shopify identifiers alongside email. Handle email changes without duplicating customers. |
Credentials | Encrypt keys, keep secrets out of logs, support rotation, and surface auth failures to the merchant. |
API usage | Keep queries targeted, paginate, handle throttling, and tolerate new response fields. |
Mutation safety | Check outcomes before retrying. After an ambiguous timeout, re-check subscription state before repeating a change. |
Event processing | Authenticate requests, prevent duplicate side effects, and plan for backfill traffic. |
Observability | Log store, object IDs, operation, and outcome. Monitor processing lag, delivery failures, and API errors. |
Launch checklist
Complete the checks that apply to your integration, then share your pilot results and setup guide with the Skio team. They'll coordinate your listing, launch, and Merchant Success enablement.
Lifecycle testing: Validate initial purchase, renewal, cancellation, and every subscription action your product exposes on a test store.
Webhook resilience: Test authentication failures, duplicate deliveries, downstream outages, and profile backfills.
Shopify sync: Confirm API changes in Skio produce the expected Shopify order, and that your app detects subscription orders correctly.
Merchant docs: Publish setup instructions, supported features, known limitations, and a support contact.
Pilot: Run a pilot with a merchant whose workflows match your intended use case.
FAQ
FAQ
Do I need to build an OAuth flow?
No. Skio uses store-specific API keys that merchants generate in the Skio Dashboard.
Can I reuse my Recharge integration?
No. Skio requires a separate implementation, but its data model mirrors Shopify subscription objects, which makes the mapping easier.
Should I use GraphQL to pull historical data?
No. Use BigQuery for historical and recurring ingestion. GraphQL is built for targeted, real-time reads and actions.
Why didn't my test order create a subscription?
Orders created through the Shopify Admin API or a bulk import don't create subscription contracts. Use a supported subscription checkout or creation flow.