Generating cancel and skip links for your store
How to build the URLs that trigger Garde cancel and skip flows from your own website, email templates, or member portal.
Garde cancel and skip flows are triggered by a simple URL. You can place these links anywhere your members interact with your brand — your website, email templates, Shopify member portal, or even a QR code on a printed card.
This guide shows you how to build those links.
The cancel flow link
A cancel flow link looks like this:
`` https://your-garde-url.vercel.app/cancel?winery=your-store.myshopify.com&cid=CUSTOMER_ID&sub=SUBSCRIPTION_ID ``
It has three required parameters:
| Parameter | What it is | Where to find it |
|---|---|---|
winery | Your store's platform identifier | Awtomic: your myshopify domain (e.g., ridgeline-cellars.myshopify.com). Commerce7: your tenant ID. |
cid | The member's customer ID | From your subscription platform (Awtomic or Commerce7) |
sub | The member's subscription ID | From your subscription platform |
When a member clicks this link, Garde pulls their real name, club, tenure, and shipment details from your platform and shows them your configured cancel flow.
The skip flow link
A skip flow link works the same way, just at a different path:
`` https://your-garde-url.vercel.app/skip?winery=your-store.myshopify.com&cid=CUSTOMER_ID&sub=SUBSCRIPTION_ID ``
The parameters are identical. The member sees your skip flow instead of the cancel flow.
Where to find customer and subscription IDs
Awtomic
In your Awtomic dashboard, open a member's subscription. The customer ID and subscription ID are both visible in the URL and on the subscription detail page. They're numeric values (e.g., 12345).
Commerce7
In Commerce7, open a member's club membership. The customer ID and membership ID are UUIDs (e.g., a1b2c3d4-e5f6-7890-abcd-ef1234567890). Use the membership ID as the sub parameter.
Optional parameters
You can append these to either link:
| Parameter | What it does | Example |
|---|---|---|
token | Passes the member's platform session token for verification | &token=eyJhb... |
preview | Opens the flow in preview mode for testing (no offer lock, fresh session) | &preview=true |
layout | Overrides the layout template | &layout=immersive |
lang | Sets the language for multi-language flows | &lang=es |
About the token parameter
If your store's member portal issues session tokens (Awtomic JWT or Commerce7 appToken), you can pass them in the link. Garde will verify the token against your platform before starting the flow. This adds an extra layer of security — it confirms the person clicking the link is actually the logged-in member.
The token is not required. Without it, the flow still works — it just relies on the customer and subscription IDs being correct and hard to guess.
Building links dynamically
In most cases, you'll generate these links dynamically rather than typing them by hand. Here are the common scenarios:
From your Shopify theme (Awtomic)
If you're adding a "Skip next shipment" or "Cancel membership" button to your member portal theme, build the URL using Liquid:
``liquid <a href="https://your-garde-url.vercel.app/cancel?winery={{ shop.domain }}&cid={{ customer.id }}&sub={{ subscription.id }}"> Manage membership </a> ``
Use {{ shop.domain }} for your myshopify domain. The exact Liquid variables for customer and subscription IDs depend on how Awtomic exposes subscription data in your theme. Check your Awtomic theme documentation for the correct variable names.
From an email template
If you're linking from a Klaviyo, Mailchimp, or other email template, use the platform's merge tags for customer and subscription IDs:
`` https://your-garde-url.vercel.app/cancel?winery=your-store.myshopify.com&cid={{customer_id}}&sub={{subscription_id}} ``
Replace your-store.myshopify.com with your actual myshopify domain (or tenant ID for Commerce7). Replace {{customer_id}} and {{subscription_id}} with whatever merge tags your email platform uses for those values.
From Commerce7 member portal
Commerce7 member portals can link directly using the tenant ID and the member's club membership ID:
`` https://your-garde-url.vercel.app/cancel?winery=your-tenant-id&cid=CUSTOMER_UUID&sub=MEMBERSHIP_UUID ``
Testing your links
Before putting a link in front of real members, test it in preview mode:
- Build your link with a real customer ID and subscription ID
- Add
&preview=trueto the end - Open the link in your browser
Preview mode skips the 30-day offer lock, so you can click through the full flow — including accepting an offer — and then open the same link again immediately. This lets you test every path without waiting.
You can also use the Preview button in Admin → Configure Flow, which does the same thing with a test session.
Common mistakes
Wrong winery value — If the link shows an error instead of the flow, double-check the winery parameter. For Awtomic stores, it should be your full myshopify domain (e.g., ridgeline-cellars.myshopify.com). For Commerce7, it should be your tenant ID.
Swapped customer and subscription IDs — If the flow opens but shows "Demo member" or fails to load member data, you may have the cid and sub values reversed. Customer ID identifies the person; subscription ID identifies their specific club membership.
Using the wrong environment — If you're testing on QA (garde-qa.vercel.app), make sure the winery is configured there. QA and production are separate environments with separate configurations.
Hardcoded IDs — Don't put a specific member's customer ID in a link that goes on your website. The link needs to be built dynamically per member, using your platform's template variables.
Next: Troubleshooting the cancel flow — what to do if the flow isn't working as expected.