Streakfox
Guides

Course platforms, Zapier and Make

Count a member action from Teachable, Thinkific, Circle, LearnWorlds or Shopify Flow with one copied URL and no code.

Course platforms, Zapier and Make

Your course platform already knows when a member finishes a lesson or posts in the community. Zapier or Make can pass that moment to Streakfox. You copy one URL, map one field, and the member's streak moves.

Streakfox has no Zapier or Make app listing. You use the built-in webhook steps both tools ship with, which work with any platform they can trigger from.

What you need

  • A Streakfox program. Onboarding creates one.
  • Your program's incoming URL. In onboarding, choose Course platform, Zapier or Make, then copy it on the Make the right moment count step. Later you'll find it on the program's Embed tab.
  • A Zapier or Make account that can trigger on your platform's member action.

The URL holds its own secret. Anyone who has it can count actions for your program, so keep it inside your automation tool. If it leaks, choose Replace URL and paste the new one into your Zap. The old one stops working at once.

Zapier recipe

  1. Trigger. Pick your course platform's app and the action you want to count, such as "lesson completed" or "new post".
  2. Action. Add Webhooks by Zapier and choose POST. Paste your incoming URL. Leave Payload Type as Form.
  3. Data. Add member and map the member's email from the trigger. If the trigger has a lesson, post or order ID, add completion_id and map that too. Then choose Test step.

A good test returns 202 with "ok": true. Streakfox setup shows Last received with a masked email such as j•••@e••• a moment later.

Make recipe

  1. Add your platform's module as the trigger.
  2. Add HTTP → Make a request. Set Method to POST and URL to your incoming URL.
  3. Set Body type to application/x-www-form-urlencoded and add the same member and completion_id fields. Run the scenario once.

Shopify Flow

Use Send HTTP request with method POST, your incoming URL and a JSON body. Insert the customer's email and the order ID with Flow's variable picker:

{ "member": "customer email variable", "completion_id": "order ID variable" }

Fields

FieldRequiredWhat to map
memberYesThe member's email, or the platform's user ID. Use the same one always.
completion_idNoAn ID for this completion, such as the lesson or post ID.
occurred_atNoWhen it happened, as an ISO date like 2026-10-09T14:30:00Z. Last 7 days.

Streakfox also reads email, member_email, user_id and member_id as the member, so a field you already named usually works. Field names ignore case and treat spaces and dashes as underscores, so Member ID works too.

Send flat form fields or flat JSON. There's no event field: the URL already belongs to one program.

How the member is identified

Streakfox trims the value, lowercases it if it looks like an email, and hashes it with a key unique to your project. Only the hash is stored. Your members' emails never reach your Streakfox database.

Jane@Example.com and jane@example.com are the same member. A platform user ID is matched exactly, so User_7 and user_7 are two members. Pick email or ID and stick with it.

Retries and repeats

Zapier and Make can replay a step. Streakfox ignores repeats for 24 hours using this rule:

  • With completion_id. Each member and ID counts once. This is the most accurate setup.
  • Daily streak, no completion_id. The first action per member per program day counts. More actions that day change nothing, which a daily streak doesn't need anyway.
  • Running total, no completion_id. One action per member per occurred_at, or per minute when occurred_at is missing too. Two real actions from the same member in the same minute count as one. Map completion_id if that matters for you.

A repeat still returns 202, with "duplicate": true.

Show progress on your platform

Add the widget to your member area with the signed-in member's email in data-member:

<script
  src="https://cdn.streakfox.com/widget.js"
  data-project="YOUR_PROJECT_KEY"
  data-event="YOUR_ACTION"
  data-member="MEMBER_EMAIL"
  defer
></script>

Replace MEMBER_EMAIL with the variable your platform prints for the signed-in member. Use the same email your Zap sends as member. If a page leaves the variable unfilled, the widget there shows progress for that browser only. Streakfox setup fills it in for you when you pick your platform.

Here's what each platform's own documentation says today:

Platformdata-member valueWhere the widget goesZapier trigger to countSource
LearnWorlds{{USER.EMAIL}}Site builder custom code, the "logged in" body slotLearning Activity CompletedLearnWorlds
Shopify{{ customer.email }}theme.liquidUse Shopify Flow insteadShopify
TeachableNot named in its docs. Test one first.Site → Code SnippetsLecture CompletedTeachable
ThinkificJavaScript only. Needs a short script.Settings → Code & analytics → Site footer codeLesson CompletedThinkific
CircleDocumented for its mobile app onlySite → Code snippetsMember Completed Course LessonCircle
MemberstackJavaScript only (member.auth.email)Custom code on your signed-in pagesNone for completions. Count from the tool hosting lessons.Memberstack
KajabiNone documentedThe widget can't tell members apart yetNone for lessons. Assessment Completed is the closest.Kajabi
PodiaNot availableCustom code runs on public pages only, not when signed inNone for lessonsPodia
SkoolNot availableSkool doesn't offer custom codeNone for lessons. Answered Membership Questions, New Paid Member.Skool on Zapier

Zapier trigger names come from each platform's Zapier app page. Where a platform has no completion trigger, Streakfox can only count the events it does offer.

On Shopify, wrap the widget in {% if customer %} so it only loads for signed-in customers.

What data-member can and can't do

data-member chooses whose progress the widget displays. Anyone can read your page's source and put another member's email in it, so Streakfox treats it as display only:

  • It shows streak counts, the week and milestone messages.
  • It never reveals protected reward values, such as coupon codes or reward links. Those still need a signed identity token.
  • It never shows any other member's data, emails or IDs. Streakfox doesn't store them.

So someone who guesses a member's email on your site could see that member's streak count. If that's not acceptable for your community, use a signed identity token instead.

Errors

Zapier and Make show the message from Streakfox when a step fails. Streakfox setup shows the latest one too, with a next step.

StatuserrorFix
400MEMBER_REQUIREDMap the member's email to the member field.
400INVALID_OCCURRED_ATSend a date from the last 7 days, or leave it out.
400INVALID_BODYSend form fields or flat JSON.
404HOOK_NOT_FOUNDThe URL was replaced. Copy the current one from Streakfox.
409IDEMPOTENCY_KEY_IN_PROGRESSThe same action is being counted. Retry in a second.

Test, then go live

Until your program goes live, every action counts as a test. Run your Zap with a test member, watch Streakfox setup confirm their progress, then go live.

On this page