Order API
Write CallUpdateSubscriptions1
Pushes current subscription snapshots to Bubblehouse.
| Kind | Write API call |
|---|---|
| Method | POST |
| URL | https://app.bubblehouse.com/api/v2023061/<shop>/UpdateSubscriptions1 |
| Authentication | Shop Token |
Send the full current snapshot whenever a subscription is created or changes. Bubblehouse processes up to 500 subscriptions and 10,000 combined lines, cycles, and coupon codes per request using the same subscription logic as its first-party integrations.
Bubblehouse assigns the Custom API integration source. Use id for the stable primary ID assigned by the subscription system. Send ecomm_id only when a separate ecommerce system assigns a distinct ID to the same subscription.
A success response confirms that batch processing finished. Bubblehouse skips a subscription that cannot be processed and continues with later items.
Retry the entire batch with exponential backoff after a network error, 429, or 5xx response. Replaying a subscription is safe.
See the custom subscription programs guide for integration design and cycle-reporting choices.
Input
-
Full current subscription snapshots to process.
Output
A successful response has no meaningful properties and only contains an ok property always set to true:
{"ok": true}
Usage Examples
Completed-cycle counts
This batch reports one subscription with a known count and another whose cycle progress is unknown. The first subscription also has a distinct ID in a separate ecommerce system.
Request
{
"subscriptions": [
{
"created_at": "2026-01-08T10:00:00Z",
"customer": {
"email": "alice@example.com",
"id": "CUSTOMER-501"
},
"cycles_completed": 4,
"ecomm_id": "gid://shopify/SubscriptionContract/1001",
"id": "SUB-1001",
"lines": [],
"status": "active",
"updated_at": "2026-08-10T14:30:00Z"
},
{
"created_at": "2026-07-01T10:00:00Z",
"customer": {
"id": "CUSTOMER-502"
},
"id": "SUB-1002",
"lines": [],
"status": "paused",
"updated_at": "2026-08-10T14:31:00Z"
}
]
}
Response
{
"ok": true
}
Specific Errors
| Status | Error | Reason & Examples |
|---|---|---|
| 422 | invalid_request_data |
Global Errors
| Status | Error | Reason & Examples |
|---|---|---|
| 401 | invalid_token |
The provided authentication token is invalid or has expired. |
| 429 | rate_limit_exceeded |
Your usage is over the rate limit. Ensure that you're not making duplicate calls, and contact our team for a rate limit increase. |
| 400 | obsolete_global_api_version |
The global API version you are trying to use is no longer supported. |
| 400 | invalid_global_api_version |
The global API version you are trying to use has never existed. |
| 400 | inaccessible_global_api_version |
The global API version you are trying to use is not enabled on your account. |