REST API + MCP server

Build with the
flashtimer API

Create, list, update, archive and delete countdown timers programmatically. Every API key is scoped to your organization — timers you manage via the API show up right alongside the ones you make in the dashboard.

Authentication

Create a key from Settings → API Tokens. The plaintext value is only ever shown once, right after creation — store it somewhere safe. Pass it as a bearer token on every request via the Authorization header:

Authorization: Bearer ak_live_4f9c2a1b...

Revoking a key from the dashboard takes effect immediately — requests using a revoked key get a 401.

Create a timer

POST/api/v1/timers

name and expiry_datetime are the only required fields — everything else, including the entire visual theme, falls back to sane defaults. A successful response returns the new timer's id:

{
  "id": "5da851e7-f41d-4af8-bd87-f45611a6bd67"
}

For all available fields and a full theme example, see Field reference below.

List timers

GET/api/v1/timers

Returns timers belonging to your organization, newest first by default. All parameters are optional query-string parameters.

[
  {
    "id": "5da851e7-f41d-4af8-bd87-f45611a6bd67",
    "name": "Black Friday Sale",
    "description": "",
    "end_date_time": "2026-11-27T23:59:00-05:00[America/New_York]",
    "is_archived": false,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-02T00:00:00.000Z"
  }
]

Query parameters

ParameterTypeDescription
querystringCase-insensitive substring match on name.
status"all" | "active" | "expired" (repeatable)Defaults to all statuses.
archivedbooleanList archived timers instead of active ones. Defaults to false.
order_by"name" | "created_at" | "updated_at" | "end_date_time"Defaults to created_at.
order_direction"asc" | "desc"Defaults to desc.
limitinteger (1-100)Defaults to 100.
offsetintegerDefaults to 0.

Retrieve a timer

GET/api/v1/timers/:id

Returns a timer's full configuration, including its theme — the same shape you'd send to create or update it.

{
  "name": "Black Friday Sale",
  "description": "",
  "organization_id": "org_2abc123def456",
  "expiry_datetime": "2026-11-27T23:59:00-05:00[America/New_York]",
  "expiry_message": "Sale has ended!",
  "language": "en",
  "is_archived": false,
  "theme": { "...": "same shape as the theme you sent on create" }
}

Update a timer

PATCH/api/v1/timers/:id

Partial update — send only the fields you want to change. Anything you omit, including nested theme fields, is left exactly as it was. The response is the full timer config after the update:

{
  "name": "Extended Black Friday Sale",
  "description": "",
  "organization_id": "org_2abc123def456",
  "expiry_datetime": "2026-11-29T23:59:00-05:00[America/New_York]",
  "expiry_message": "Sale has ended!",
  "language": "en",
  "is_archived": false,
  "theme": { "...": "unchanged fields are left as they were" }
}

Delete a timer

DELETE/api/v1/timers/:id

Permanently deletes the timer. There's no undo — if you might want it back, use Archive instead.

A successful response is 204 No Content with an empty body.

Archive & restore a timer

Archiving hides a timer from your active list without deleting it — useful for sales that ended but you still want to reference later.

POST/api/v1/timers/:id/archive

{ "archived": true }

Restore

POST/api/v1/timers/:id/restore

{ "restored": true }

Field reference

These are the body fields accepted by Create. Update accepts the exact same fields, all optional — only the ones you include are changed.

FieldTypeRequiredDescription
namestringYesThe timer's name (1-200 characters).
expiry_datetimestringYesZoned datetime the timer counts down to, e.g. 2026-12-31T23:59:00+02:00[Europe/Athens].
descriptionstringNoInternal note about the timer (not shown to recipients).
expiry_messagestringNoMessage shown once the timer has expired.
languagestringNoLocale for rendered labels, e.g. "en". Defaults to "en".
fallback_image_keystringNoR2 object key of a static image to show after expiry. Must already exist in your fallback images bucket.
themeobjectNoVisual overrides — see below. Any field you omit falls back to the default theme.

theme fields

All optional. Unknown keys are rejected with a 422 so typos don't silently fall back to defaults.

FieldTypeDescription
shape_type"ft_01" | "ft_02" | "ft_03" | "ft_04" | "ft_05"Which of the five timer visual templates to use.
font_size"small" | "medium" | "large"Digit font size.
fontstringFont name, or custom-font-<id> for a font you've uploaded under Fonts.
backdrop_fillhex colorBackground fill color, e.g. #0F172A.
no_backdropbooleanRender with a transparent background instead of backdrop_fill.
matte_colorhex colorMatte color shown around the timer shape.
digits.leading_zerobooleanPad single digits with a leading zero.
digits.colorhex colorDigit text color.
digits.fillhex colorDigit background fill color.
digits.border_colorhex colorOptional digit border color.
labels.colorhex colorColor of the unit labels (days/hours/etc).
labels.displaybooleanWhether unit labels are shown.
separators.colorhex colorColor of the separators between units.
separators.displaybooleanWhether separators are shown.
days.displaybooleanWhether the days unit is shown.

Responses

Error responses you may get from any /api/v1/timers endpoint, with an example body for each. Toggle Show Schema to see the shape instead of example values.

{
  "error": "expiry_datetime must be a valid zoned datetime string"
}
expiry_datetime isn't a parseable zoned datetime string.

Rate limits

Requests are limited to 60 per minute, per organization (not per key — all keys belonging to the same organization share the same limit). Once you hit the limit, you'll get a 429 until the window resets.

MCP server

flashtimer also exposes an MCP server at /api/mcp, so AI tools like Claude can create and manage your timers directly. It uses the same API key and rate limit as the REST API above — pass it as a bearer token via the Authorization header in your client's MCP config:

{
  "mcpServers": {
    "flashtimer": {
      "url": "https://flashtimer.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ak_live_4f9c2a1b..."
      }
    }
  }
}

Available tools

ToolDescription
create_timerCreates a new timer. Same fields as POST /api/v1/timers.
list_timersLists your timers, with optional filtering, ordering, and pagination.
get_timerFetches the full configuration of a single timer by id.
archive_timerArchives a timer so it stops showing as active.
restore_timerRestores a previously archived timer.
generate_timer_with_aiCreates a timer from a free-text prompt, e.g. "20% off, ends Friday, dark theme".
revise_timer_with_aiRevises an existing timer's copy, styling, or schedule from a free-text instruction, e.g. "make it red and extend by 2 days".

Expiry webhooks

Add one or more webhook URLs to a timer and flashtimer will POST a JSON payload to each URL the moment that timer's countdown reaches zero. Use this to trigger Zapier Zaps, Make scenarios, or any custom automation endpoint — without writing any server-side code.

How to add a webhook

  1. Open the timer editor and click Actions in the left panel.
  2. Click On Expiry to open the webhook dialog.
  3. Paste your webhook URL into the input field and click + Add. You can add multiple URLs — each one will be called independently.
  4. Click Save. The webhooks are stored immediately; no publish step is required.

Payload

flashtimer sends this JSON body with Content-Type: application/json:

{
  "event": "timer.expired",
  "timer": {
    "id": "5da851e7-f41d-4af8-bd87-f45611a6bd67",
    "name": "Black Friday Sale",
    "expiredAt": "2026-11-27T23:59:00.000Z",
    "organizationId": "org_01jk..."
  },
  "timestamp": "2026-11-27T23:59:01.234Z"
}

Connecting to Zapier or Make

Both platforms expose a "catch webhook" trigger URL you can paste directly into the dialog:

  • Zapier — create a Zap, choose Webhooks by Zapier → Catch Hook, copy the URL, paste it here. See the Zapier integration guide for the full walkthrough.
  • Make — add a Webhooks → Custom webhook module, copy the URL, paste it here. See the Make integration guide.

Notes

  • Webhooks fire at most once per timer. Once a timer has expired and the webhooks have been called, they will not fire again even if the timer is later edited.
  • Each URL is called independently with Promise.allSettled — one slow or failing endpoint does not block the others.
  • The dialog shows a green Last fired timestamp once the webhooks have been called, so you can confirm delivery without leaving flashtimer.

Klaviyo

Connect Klaviyo so flashtimer can list your draft campaigns inside the Deploy → Send to ESP panel. You pick the campaign, flashtimer generates the embed snippet, and you paste it — no tab-switching needed.

Setup

  1. In Klaviyo go to Account → Settings → API Keys and click Create Private API Key.
  2. Name it (e.g. flashtimer) and copy the key — it starts with pk_. Klaviyo shows it only once.
  3. Paste the key under Settings → Integrations → Email Platforms → Klaviyo.

What it unlocks

  • Draft campaigns are fetched and shown in the Send to ESP panel.
  • flashtimer generates a ready-to-paste <img> snippet pointing at the live timer GIF on chronos.flashtimer.app.

Paste into Klaviyo

Add a Custom HTML block in your email and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;width:100%;" />

Mailchimp

Connect Mailchimp to pull draft campaigns into the Send to ESP panel and generate a countdown embed in seconds.

Setup

  1. In Mailchimp go to Profile → Extras → API Keys → Generate Key and copy the key.
  2. Find your server prefix — the part before .api.mailchimp.com in your API endpoint URL, e.g. us1.
  3. Enter both under Settings → Integrations → Mailchimp.

What it unlocks

  • Campaigns with status save (draft) are listed in the Send to ESP panel.
  • One-click snippet generation and copy for the selected campaign.

Paste into Mailchimp

Add a Code block in your campaign and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;width:100%;" />

Omnisend

Connect Omnisend to list draft campaigns and embed countdown timers directly into your Omnisend emails.

Setup

  1. In Omnisend go to Store Settings → Integrations → API keys.
  2. Click Generate New Key, give it a name, and copy it.
  3. Paste the key under Settings → Integrations → Omnisend.

Paste into Omnisend

Add an HTML block in your campaign and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

ActiveCampaign

Connect ActiveCampaign to see draft email campaigns and embed countdown timers — useful for time-sensitive automation sequences.

Setup

  1. In ActiveCampaign go to Settings → Developer. Both your API URL (e.g. https://youracccount.api-us1.com) and your API Key are on that page.
  2. Copy both values.
  3. Enter them under Settings → Integrations → ActiveCampaign.

What it unlocks

  • Draft campaigns (status 1) are listed in the Send to ESP panel.
  • Snippet generation for one-click copy and paste.

Paste into ActiveCampaign

Add an HTML block in your campaign and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

Drip

Connect Drip to embed countdown timers in your broadcasts and workflows. Requires your API token and your numeric Account ID.

Setup

  1. In Drip go to Settings → User Settings and copy your API Token.
  2. Find your Account ID — it's the number in the URL when logged in: app.getdrip.com/{accountId}/....
  3. Enter both under Settings → Integrations → Drip.

Paste into Drip

Add a Custom HTML block in your broadcast and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

Brevo

Connect Brevo (formerly Sendinblue) to pull draft email campaigns into flashtimer and embed countdown timers with one click.

Setup

  1. In Brevo go to Profile → SMTP & API → API Keys and click Generate a new API key.
  2. Copy the key — it starts with xkeysib-.
  3. Paste it under Settings → Integrations → Brevo.

What it unlocks

  • Draft email campaigns are fetched and shown in the Send to ESP panel.
  • One-click snippet generation for the chosen campaign.

Paste into Brevo

Add a Raw HTML block in your campaign and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

Wix

Connect Wix to pull your draft Email Marketing campaigns into flashtimer and generate countdown timer embeds with one click. Requires a Wix API key and your Site ID.

Setup

  1. In your Wix dashboard go to Settings → API Keys and click Generate API Key.
  2. Name it (e.g. flashtimer) and copy the key.
  3. Find your Site ID — it appears in your site dashboard URL: manage.wix.com/dashboard/{siteId}/....
  4. Enter both under Settings → Integrations → Wix.

What it unlocks

  • Draft Email Marketing campaigns are listed in the Send to ESP panel.
  • One-click snippet generation for the selected campaign.

Paste into Wix

Add an HTML block in your email and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

Constant Contact

Connect Constant Contact using an OAuth access token from the developer portal to embed countdown timers in your emails.

Setup

  1. Go to the Constant Contact Developer Portal and log in with your Constant Contact account.
  2. Under My Applications, find your app (or create one) and navigate to the Auth tab.
  3. Copy the access_token.
  4. Paste it under Settings → Integrations → Constant Contact.

Paste into Constant Contact

Add a Custom Code block in your email and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

GetResponse

Connect GetResponse to pull draft newsletters into flashtimer and embed countdown timers without leaving the timer editor.

Setup

  1. In GetResponse go to Profile → Integrations & API → API.
  2. Click Generate API Key and copy the key.
  3. Paste it under Settings → Integrations → GetResponse.

What it unlocks

  • Draft newsletters (status draft) are listed in the Send to ESP panel.
  • One-click snippet generation and copy for the selected newsletter.

Paste into GetResponse

Add a Custom HTML block in your newsletter and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

MailerLite

Connect MailerLite to pull draft email campaigns into flashtimer and embed countdown timers in one click. Requires a MailerLite Advanced plan for API access.

Setup

  1. In MailerLite go to Integrations → Developer API.
  2. Click Generate new token, name it, and copy it.
  3. Paste it under Settings → Integrations → MailerLite.

What it unlocks

  • Draft email campaigns are fetched and shown in the Send to ESP panel.
  • One-click snippet generation and copy for the selected campaign.
  • Requires an Advanced plan — API access is not available on the Free plan.

Paste into MailerLite

Add an HTML block in your campaign and paste:

<img src="https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67"
     alt="Black Friday Sale"
     style="display:block;outline:none;border:none;text-decoration:none;max-width:100%;" />

Zapier

Connect Zapier to send timer events to any of Zapier's 7,000+ supported apps — Slack, Notion, Google Sheets, Airtable, Salesforce, and more. No code required. flashtimer POSTs a JSON payload to your Zap the moment you click Send to Platform on a timer.

Setup

  1. In Zapier create a new Zap and choose Webhooks by Zapier as the trigger.
  2. Select Catch Hook and click Continue.
  3. Copy the unique webhook URL (e.g. https://hooks.zapier.com/hooks/catch/...).
  4. Paste it under Settings → Integrations → Zapier.
  5. Add an action step in your Zap (send Slack message, log to Sheets, tag a CRM contact, etc.) and turn it on.

What it unlocks

  • flashtimer POSTs a structured JSON payload every time you send a timer to a platform.
  • Build multi-step Zaps: notify a Slack channel, update a Notion database, create a CRM task — all from one timer send.
  • The Zapier panel in the timer editor shows whether the last send succeeded or failed, so you can troubleshoot Zap filters without leaving flashtimer.

Webhook payload

flashtimer sends this JSON to your Zap when you click Send to Platform:

{
  "timerName": "Black Friday Sale",
  "timerUrl": "https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67",
  "gifUrl": "https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67",
  "expiresAt": "2026-11-27T23:59:00-05:00[America/New_York]"
}

timerUrl and gifUrl point at the live GIF — embed either directly in a Slack message or HTML email action.

Shopify

Connect your Shopify store so flashtimer can read your active Price Rules and surface real sale end-dates directly in the timer editor. Instead of typing a deadline manually, you pick a discount rule and the countdown is set automatically.

Setup

  1. In Shopify Admin go to Settings → Apps and sales channels → Develop apps and click Create an app.
  2. Name it (e.g. flashtimer), open its Configuration tab, then click Configure under Admin API integration.
  3. Enable the following scopes under Admin API integration:
    • read_price_rules — lets flashtimer list your discounts in the timer editor.
    • read_discounts — required for webhook processing (fetching full discount details).
    • write_webhooks — lets flashtimer register webhook listeners automatically.
    • read_products — required for the Shopify Stock Monitor feature (list products and stock levels in the timer editor).
    • read_inventory — required for the Stock Monitor to read per-location inventory quantities.
    Save.
  4. Click Install app to activate it.
  5. Copy the Admin API access token (starts with shpat_) — Shopify shows it only once.
  6. Also copy your store's .myshopify.com domain from the admin URL.
  7. Paste both under Settings → Integrations → Shopify.

What it unlocks

  • Active Price Rules with an ends_at date appear in the timer editor under Pick a sale end date.
  • Select a rule and the countdown deadline fills in automatically — no copy-paste needed.
  • Discounts with ends_at: null (always-on) are shown as context but don't set a deadline.
  • flashtimer fetches up to 50 discounts per request, ordered by most recent.

Example discounts response

// Example discounts returned from Shopify
[
  { "id": "123456789", "title": "Black Friday 20% Off", "endsAt": "2026-11-28T00:00:00Z" },
  { "id": "987654321", "title": "Cyber Monday",         "endsAt": "2026-12-01T00:00:00Z" },
  { "id": "111222333", "title": "Always-on member deal","endsAt": null }
]

Automatic sync via webhooks

When you save your Shopify credentials, flashtimer automatically registers webhook listeners in your store for discounts/create, discounts/update, and discounts/delete. The legacy Price Rules API (price_rules/create, price_rules/update, price_rules/delete) is also supported for stores that haven't migrated to the modern Discounts API.

Enabling automation

Webhook sync is off by default. Under Settings → Integrations → Shopify you'll find three toggles under Automation:

  • Auto-create timers — a new timer is created when a discount is added in Shopify that has an end date.
  • Auto-update timers — the linked timer is updated whenever the discount's title or end date changes.
  • Auto-archive timers — the timer is archived when the discount is deleted or deactivated in Shopify.

Webhook verification

Every incoming webhook is verified with HMAC-SHA256 using your Shopify Custom App's API Secret Key. Add it to the Webhook Signing Secret field in the Shopify integration settings — without it, flashtimer will reject all incoming webhook calls. The API Secret Key is on the API credentials tab of your Custom App in Shopify Admin.

Webhooks are received at:

POST https://flashtimer.app/webhook/shopify

Shopify Stock Monitor

The Stock Monitor lets you tie any timer to a Shopify product's inventory. When the product's total stock drops to or below a threshold you define, flashtimer automatically expires the timer — every email opened after the sell-out shows the expiry message instead of a live countdown.

Additional scopes required

Your Shopify Custom App must have two extra scopes beyond the base integration:

  • read_products — allows flashtimer to list your products and their stock levels.
  • read_inventory — allows flashtimer to read per-location inventory quantities.

Adding scopes to an existing app

  1. In Shopify Admin go to Settings → Apps and sales channels → Develop apps and open your flashtimer app.
  2. Click Configuration → Admin API integration → Edit.
  3. Enable read_products and read_inventory, then click Save.
  4. Go to the API credentials tab and click Reinstall app — Shopify generates a new access token with the updated scopes. Copy it (shown only once).
  5. In flashtimer go to Settings → Integrations → Shopify, click Disconnect Shopify, then reconnect with your new token.

How to use it

  1. Open any timer in the editor and click the ⋯ actions menu in the top-right corner.
  2. Select Shopify stock. A dialog lists all your Shopify products with their current stock levels.
  3. Click the product you want to monitor, set the Expire when stock ≤ threshold (e.g. 0 to expire only when completely sold out, or 10 for a low-stock trigger), and click Save.
  4. flashtimer checks every 5 minutes. As soon as the condition is met, the timer is backdated to an expired state and the KV cache is updated — every subsequent email open renders the expiry message immediately, with no TTL delay.
Stock badge colours in the dialog: Products currently at or below your threshold appear with a red badge so you can see which items are already low before saving.

Make

Connect Make (formerly Integromat) to send timer data to any of Make's 2,000+ supported apps and services — CRMs, project tools, databases, and more — using a visual no-code workflow. No code required.

Setup

  1. In Make create a new Scenario and add a Webhooks → Custom Webhook module as the trigger.
  2. Click Add to create the webhook, give it a name, and copy the generated URL.
  3. Paste the URL under Settings → Integrations → Make.
  4. Add action modules to your Scenario (e.g. Google Sheets, Slack, Airtable) and activate it.

What it unlocks

  • flashtimer POSTs a JSON payload to your Make webhook when you click Send to Platform.
  • Chain as many Make modules as you need — update a CRM, log to a sheet, send a Slack alert, all in one scenario.
  • The Make panel in the timer editor shows whether the last send succeeded or failed.

Webhook payload

{
  "timerName": "Black Friday Sale",
  "timerUrl": "https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67",
  "gifUrl": "https://chronos.flashtimer.app/5da851e7-f41d-4af8-bd87-f45611a6bd67",
  "expiresAt": "2026-11-27T23:59:00-05:00[America/New_York]"
}

WooCommerce

Connect your WooCommerce store to surface active sale end dates from your coupons directly in the timer editor. Instead of entering a deadline manually, pick a coupon and flashtimer fills it in automatically.

Setup

  1. In your WordPress admin go to WooCommerce → Settings → Advanced → REST API.
  2. Click Add key, set Permissions to Read, and click Generate API key.
  3. Copy the Consumer key and Consumer secret — they are shown only once.
  4. Enter your store URL (e.g. https://yourstore.com), Consumer key, and Consumer secret under Settings → Integrations → WooCommerce.

What it unlocks

  • Active coupons with a date_expires are listed in the timer editor under Pick a sale end date.
  • On-sale products (fetched via on_sale=true) are also surfaced alongside coupons, so you can link a timer to a product sale end date too.
  • Select a coupon or product and the countdown deadline is set automatically.
  • Items with no expiry date are shown for reference but won't set a deadline.

Example coupon response

[
  { "id": 101, "name": "Black Friday 20% Off", "date_expires": "2026-11-28T00:00:00Z" },
  { "id": 102, "name": "Cyber Monday Flash",   "date_expires": "2026-12-01T00:00:00Z" }
]

Automatic sync via webhooks

When you save your WooCommerce credentials, flashtimer automatically registers webhook listeners in your store for coupon.created, coupon.updated, coupon.deleted, and coupon.restored via the WooCommerce REST API. Each webhook is signed with a per-org HMAC-SHA256 secret that flashtimer generates automatically — no manual configuration needed.

Enabling automation

Webhook sync is off by default. Under Settings → Integrations → WooCommerce you'll find three toggles under Automation:

  • Auto-create timers — a new timer is created when a coupon with a date_expires_gmt is added.
  • Auto-update timers — the linked timer is updated when the coupon's code or expiry changes.
  • Auto-archive timers — the timer is archived when the coupon is deleted, and restored when it is un-deleted.

Webhooks are received at:

POST https://flashtimer.app/webhook/woocommerce/{orgId}

The orgId is your organization's unique identifier — flashtimer uses it to look up your credentials and route the webhook to the correct account. It's included automatically in the webhook URL registered in your WooCommerce store.

BigCommerce

Connect your BigCommerce store to see active promotion and coupon end dates in the timer editor. flashtimer reads your store's promotions via the V2/V3 API so you can align countdowns to your discount expiry without switching tabs.

Setup

  1. In your BigCommerce control panel go to Settings → API → API Accounts and click Create API Account → Create V2/V3 API Token.
  2. Give it a name and set the Promotions scope to Read-only. All other scopes can remain None.
  3. Click Save and copy the Access Token.
  4. Find your Store Hash — it's in the API Path shown on the same page: https://api.bigcommerce.com/stores/{storeHash}/v3/.
  5. Enter both under Settings → Integrations → BigCommerce.

What it unlocks

  • Active promotions with an expires date are listed in the timer editor.
  • Select a promotion and the countdown deadline is set automatically.
  • Promotions without an expiry are shown for context but won't set a deadline.

Example promotions response

[
  { "id": 501, "name": "Black Friday Promo",  "expires": "2026-11-28T00:00:00+00:00" },
  { "id": 502, "name": "Holiday Sale",        "expires": "2026-12-26T00:00:00+00:00" }
]