Zapier Recipes
Working Zaps built on Wefunder for Zapier, the Zapier app you connect with your Wefunder account. No API key, no webhook URL: you sign in, pick a company or syndicate you manage, and Wefunder sends that target's events straight to your Zap. Each recipe below is the exact sequence of steps in the Zap editor, with the fields to map.
Wefunder for Zapier is a private Zapier app. Ask your Wefunder contact for an invite link; accepting it adds "Wefunder" to the apps you can pick in the Zap editor. You also need to be a founder, admin, or editor of the company (or a manager of the syndicate) you want to connect, because the app only lists what your account may act on.
What the app gives you
Three instant triggers, one per family of events:
| Trigger | Fires on | Pick |
|---|---|---|
| Investment Event | an investment or reservation in your company is created, reinstated, canceled, converted, changes amount, or is executed | a company |
| Offering Event | your company's round opens, starts closing, closes, or is canceled | a company |
| Syndicate Member Event | someone is invited to, applies to, is approved for, joins, leaves, or declines your syndicate | a syndicate |
Every trigger has an Events field. Leave it empty to receive the whole family, or pick a subset; each choice in the picker has a one-line description so you can tell, say, Applied from Joined. Turning the Zap on connects the app to the target you picked (it appears under the company's Settings → Installed apps, or the syndicate's Settings → Integrations, where you can revoke it any time). Turning it off stops the deliveries.
Each delivery is the signed event envelope, so the fields you map are the same ones a
developer sees in the event catalog: event, data.…,
installation.target.id.
Recipe 1: a Slack message for every new investment
What you get. A message in a channel you choose each time someone invests in your company, with their name, the amount, and their running total with you. About five minutes.
Steps
-
New Zap → Trigger. Search for Wefunder and pick Investment Event.
-
Account. Click Sign in. You land on wefunder.com, approve the permissions, and come back. The connection is labelled with your name and email.
-
Trigger setup.
- Company: pick your company from the dropdown. Only companies you found, administer, or edit are listed.
- Events: pick Created only. (Leaving it empty would also post on cancellations, amount edits, and so on; those make good separate Zaps.)
-
Test trigger. Zapier shows a sample investment so you can map fields. The sample is representative; real deliveries start once the Zap is on.
-
Filter (optional but recommended). Add a Filter by Zapier step: Status (Text) Exactly matches
active. Acreatedevent with statusreservedis a reservation on a testing-the-waters page, not an investment; see Reservations below for how to handle those. -
Action. Add Slack → Send Channel Message, connect your Slack, pick the channel, and compose the message from the trigger's fields:
🎉 New investment: *{{Investor name}}* invested *${{Amount committed (USD)}}*.
Their total with us is now ${{Investor: total committed (USD)}}
({{Investor: active investments}} active).Suggested options: Send as a bot on, bot name "Wefunder", Link names off.
-
Test the action, then Publish. From here every new investment posts within a few seconds of the investor applying.
The fields, and what they mean
| Field in the editor (as labelled) | Envelope key | Notes |
|---|---|---|
| Investor name | data.investor.name | Full name as shown to the founder |
| Investor email | data.investor.email | Present only when your connection carries investor-contact permission (granted on the consent screen; a Wefunder-approved app) |
| Amount committed (USD) | data.amounts.committed | Dollars, as a number (250), not cents |
| Investor: total committed (USD) | data.investor_totals.total_committed | This investor's total active commitment across the campaign, computed at the moment of the event |
| Investor: active investments | data.investor_totals.active_investment_count | How many active investments they hold with you |
| Status | data.status | active for an investment, reserved for a reservation |
| Investment ID | data.id | The investment's inv_… id, stable across every later event about it |
| Occurred at | data.occurred_at | When it happened; use this, not the delivery time, to order events |
Reservations
A company running a testing-the-waters page receives created events with
data.status = reserved. Those are reservations, not investments, and the wording in your
message should say so. Two clean options:
- Keep the filter above (
activeonly) so the Zap stays about investments, and build a second Zap with the filter set toreservedand a message like📝 *{{Investor name}}* reserved ${{Amount committed (USD)}}. - Or use Paths by Zapier with one branch per status and a different message on each.
Never post "invested" for a reservation; the investor has not sent money.
Variations
- Cancellations. Same trigger with Events set to Canceled; message from
Investor name and Amount committed. Investor: status
tells you whether they still have anything active (
active) or not (none_active). - Amount changes. Amount changed; the old figure is
data.previous_amounts.committed. - Round milestones. Use Offering Event instead, with Opened / Closing / Closed;
data.company.nameanddata.offeringare the fields. - Syndicates. Syndicate Member Event with Joined posts a welcome for each new
member:
data.user.name,data.user.email, anddata.approved_by.namewhen a manager approved them.
Good to know
- One Zap, one target. A Zap connects one company or one syndicate. Run one Zap per target; the app allows up to five Zaps per connected target.
- Delivery and retries. Wefunder retries a delivery Zapier does not acknowledge for up to 72 hours, and the same event is never counted twice in a Zap: each delivery carries a stable id that Zapier dedupes on.
- Reconnecting a live Zap. Turn the Zap off before changing its Wefunder connection, then on again. Reconnecting a running Zap can leave the old subscription in place and double-deliver until the Zap is toggled.
- Revoking. Removing the app from the company's Installed apps (or the syndicate's Integrations) stops every Zap on that target at once and cancels anything queued.
- Building your own. Everything these triggers deliver is also available to your own code through webhooks and the Partner API; the CRM sync guide is the code-first version of the same idea.