Seal Subscriptions is a Shopify app that enables recurring product billing, subscription plan management, and automated billing cycles. By connecting Seal Subscriptions to Omnisend, merchants can automatically trigger personalized communication based on real-time subscription activity.
This integration sends key events such as billing success or failure, subscription updates, and lifecycle changes to Omnisend, where they can trigger automations, personalize emails, or build dynamic segments.
Key Benefits
Trigger real-time automations based on subscription activity
Use rich event data for personalized email and SMS content
Build segments based on billing status, subscription frequency, or plan type
Proactively reduce churn or drive loyalty using timely, event-based messaging
No third-party middleware or manual syncing required
Setup Process
Step 1. Go to the Omnisend App Market and → Search for "Seal Subscriptions" → Click on "Connect Now".
Step 2. Turn on wanted scenarios and click "Continue".
Step 3. To fully grant access for the Seal Subscription app via API Token.
In Shopify Admin → Apps → Seal Subscriptions → Settings → API, enable the API (if not already enabled) and copy the API token.
Return to Omnisend, complete the authorization process on the Omnisend side.
What Data Is Passed
Each event from Seal Subscriptions includes top-level subscription details, product-level data, and (for billing events) billing attempt logs.
Common Fields Available Across Events
"subscription_id"
– Unique ID of the subscription"status"
– Current subscription status (e.g.,ACTIVE
,PAUSED
)"orderId"
– Associated Shopify order ID"currency"
– Store currency (e.g.,EUR
)"billingInterval"
– Frequency of billing (e.g.,1 day
,1 month
)"deliveryInterval"
– Shipping frequency"subscriptionType"
– Type of plan (e.g.,1
= regular,2
= prepaid)"internalId"
– Internal reference"totalSubscriptionValue"
– Total value of the subscription
These can be used as personalization variables in messages:
[[ event.subscription_id ]]
[[ event.billingInterval ]]
[[ event.status ]]
[[ event.currency ]]
Product-Level Data: "line_items"
Array
Each event includes a "line_items"
array with the subscribed product(s):
"productName"
"price"
,"finalPrice"
,"originalPrice"
"quantity"
"variantID"
,"productID"
"discountAmount"
,"totalDiscount"
"requiresShipping"
,"taxable"
"finalAmount"
,"originalAmount"
How to use data in dynamic content blocks within automations - read more here
Billing Attempt Logs
Two events include additional billing arrays:
Seal Subscription Billing Attempt Succeeded
→"billing_attempts"
arraySeal Subscription Billing Attempt Failed
→"failed_billing_attempt"
array
Each object may contain:
For successful attempts
"ba_id"
"ba_attempted_at"
"ba_order_id"
"ba_status"
"ba_completed_at"
"ba_triggered_manually"
For failed attempts:
"fba_id"
"fba_date"
"fba_status"
"fba_completed_at"
These fields allow you to trigger messages based on when billing succeeded or failed, and optionally display billing history.
Event Mapping Overview
Seal Event Type | Omnisend Trigger Name |
Subscription created |
|
Subscription updated |
|
Subscription paused |
|
Subscription resumed |
|
Subscription cancelled |
|
Billing attempt succeeded |
|
Billing attempt failed |
|
These events appear in Omnisend under the Custom Event category. You can use them to trigger automations and create segments.
Use in Automations
Each event can be used as a trigger in automation workflows. The fields passed with the event can be used to personalize message content.
High-Level Recommendations:
Seal Subscription Created
Use to:
Start onboarding or welcome flows
Introduce the benefits of the subscription
Ask for preferences or introduce how billing works
Seal Subscription Updated
Use to:
Notify customer about plan changes
Confirm updates to delivery or billing intervals
Highlight what’s new in their subscription
An updated event is generated alongside all other events. So if a contact has been paused, an update will happen, and hence, the event will be generated.
Seal Subscription Paused
Use to:
Confirm the pause action
Offer options to resume
Highlight what the customer is missing
Seal Subscription Resumed
Use to:
Welcome the customer back
Confirm their next billing or shipping date
Reinforce product value
Seal Subscriptions – Subscription Cancelled
Use to:
Confirm cancellation
Ask for feedback
Offer win-back or retention discounts
Seal Subscription Billing Attempt Succeeded
Use to:
Confirm successful billing
Send a receipt or confirmation
Trigger post-purchase engagement (e.g., referral, loyalty, or upsell)
Seal Subscription Billing Attempt Failed
Use to:
Alert the customer of payment failure
Provide a link to update billing details
Offer assistance or retry options
Each workflow can use personalization variables like:
[[ event.billingInterval ]]
[[ event.line_items.productName ]]
[[ event.orderId ]]
[[ event.billing_attempts.0.ba_attempted_at ]]
Use in Segmentation
You can use all events and top-level fields for creating dynamic segments.
Example segment use cases:
Contacts who triggered
Seal Subscription Billing Attempt Failed
in the last 7 daysSubscribers with
"billingInterval"
equal to1 month
Contacts who created a subscription but didn’t resume after a pause
All active subscribers with
"status"
=ACTIVE
Available for segmentation:
Event trigger type
"billingInterval"
"subscriptionType"
"status"
"currency"
"subscription_id"
"orderId"
Nested arrays like "line_items"
and "billing_attempts"
cannot be directly used in segmentation, but can be displayed in messages.
Additional Notes
Events are pushed in real-time from Seal Subscriptions via webhook.
Personalization variables are available immediately in the message editor.
Triggers will appear in Omnisend once the event has fired at least once.
All events are treated as custom events in Omnisend’s automation and segmentation tools.
Arrays such as
"line_items"
and"billing_attempts"
are safe to use for dynamic content only.
If you didn't find the answer to your question, reach out to our Support Team through the in-app chat or at [email protected] - our team is available 24/7.