Order API

Write Call

UpdateSubscriptions1

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

  • subscriptions array of Subscription1 required

    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.

Previous
UpdateProducts3