Appstle Memberships integrates natively with Shopify Flow, Shopify's built-in automation platform. Use Flow to automate membership operations — send emails, tag customers, update CRMs, trigger Slack alerts, and more — without writing any code.
ℹ️ Why Shopify Flow? Flow actions run within Shopify's authenticated context, so there's no need for API tokens or credentials. This makes Flow the most secure way to automate membership operations.
- In the Appstle Memberships admin, go to Settings → Integrations → Shopify Flow and enable it
- Open the Shopify Flow editor in your Shopify admin
- Create a new workflow — select an Appstle Memberships trigger to start
Triggers fire automatically when membership lifecycle events occur. All triggers include a full set of membership and customer properties.
| Trigger | Handle | Description |
|---|---|---|
| Membership Created | membership-created | A new membership contract is created (includes order_id of the originating order) |
| Membership Updated | membership-updated | Membership details are modified (e.g., address, custom attributes) |
| Membership Activated | membership-activated | A paused or new membership becomes active |
| Membership Paused | membership-paused | Membership is put on pause |
| Membership Cancelled | membership-cancelled | Membership is cancelled |
| Membership Expired | membership-expired | Membership expires, OR perks are removed for cancelled/paused memberships |
| Membership Swap Product | membership-swap-product | The product/plan in a membership is changed to a different one |
| Next Order Date Changed | next-order-date-changed | The next renewal date is rescheduled |
| Billing Interval Changed | billing-interval-changed | Billing frequency is updated (e.g., monthly → annual) |
| Trigger | Handle | Description |
|---|---|---|
| Membership Billing Success | membership-billing-success | Renewal payment processed successfully — includes the new order ID |
| Membership Billing Failure | membership-billing-failure | Renewal payment failed — use this to trigger dunning emails or pause logic |
All triggers include these membership and customer properties:
| Property | Type | Description |
|---|---|---|
Membership ID | Number | Internal membership contract ID |
Status | String | Current status: ACTIVE, PAUSED, CANCELLED, EXPIRED, FAILED |
Next Billing Date | DateTime | ISO 8601 next renewal date |
Billing Interval | String | Billing frequency unit: DAY, WEEK, MONTH, YEAR |
Billing Interval Count | Number | Number of intervals between renewals (e.g., 1 for monthly, 12 for annual) |
Membership Selling Plan Name | String | Name of the membership plan (e.g., "Gold Member — Monthly") |
Membership Selling Plan ID | Number | Shopify selling plan ID |
product_id | Number | Shopify product ID for the membership product |
Variant ID | Number | Shopify product variant ID |
Original Order ID | Number | Order ID that created the membership |
Original Order Name | String | Order name (e.g., "#1001") |
| Property | Type | Description |
|---|---|---|
customer_id | Number | Shopify customer ID |
Customer Email | String | Customer's email address |
Customer Phone | String | Customer's phone number |
Customer Display Name | String | Customer's full display name |
Customer First Name | String | Customer's first name |
Customer Last Name | String | Customer's last name |
For Membership Billing Success and Membership Billing Failure triggers, these additional fields are included:
| Property | Type | Description |
|---|---|---|
Billing Attempt Status | String | SUCCESS or FAILURE |
Billing Attempt ID | Number | Shopify billing attempt ID |
Billing Date | DateTime | Scheduled billing date (ISO 8601) |
Billing Attempt Time | DateTime | Actual attempt timestamp (ISO 8601) |
Billing Attempt Count | Number | How many times billing has been attempted for this cycle |
For Membership Billing Success only:
| Property | Type | Description |
|---|---|---|
order_id | Number | The Shopify order ID created by the successful renewal |
Recurring Order ID | Number | Same as order_id |
Recurring Order Name | String | Order name (e.g., "#1002") |
Trigger: Membership Created Action: Klaviyo / Omnisend / Shopify Email — send "Welcome to the membership" email
- Use
Customer Emailas the recipient - Use
Membership Selling Plan Nameto personalize the plan name
Trigger: Membership Updated Condition: Membership Selling Plan Name contains "Gold" Action: Shopify — Add customer tag gold-member
Trigger: Membership Billing Failure Condition: Billing Attempt Count equals 1 (first failure) Action: Klaviyo — Trigger "Update Payment Method" flow
- Pass
Customer EmailandMembership IDto the email template
Trigger: Membership Cancelled Action: Shopify — Add customer tag membership-cancelled Action 2: Klaviyo — Send "We're sorry to see you go" email with win-back offer
Trigger: Membership Billing Success Action: Salesforce / HubSpot (via Flow connector) — Log renewal event
- Use
order_id,Customer Email, andMembership Selling Plan Name
Trigger: Membership Expired Action: Slack — Send message to #membership-churn channel with customer details
- Shopify Flow is available on Shopify Basic plan and above
- Flow integration must be enabled in Appstle Memberships under Settings → Integrations
- All Flow trigger events are logged in the membership's Activity Log with source
SYSTEM_EVENT - The
Membership Billing Failuretrigger fires on every failed attempt — useBilling Attempt Countto distinguish first failures from retries - Imported membership contracts do not fire
membership-created(only contracts created through the checkout flow do)