MuxForms referral submission forms collect refer-a-friend details—referrer and friend emails, consent, and hidden campaign codes—in one growth inbox before you connect Rewardful, PartnerStack, or spreadsheet payouts.
Use case
Referral programs need a trustworthy intake pipe before you automate credits, gift cards, or partner payouts.
| Field | Purpose |
|---|---|
| referrer_email / friend_email | Reward matching |
| friend_consent | Permission to contact referee |
| campaign | Hidden promo attribution |
| customer_id | In-app embed from logged-in user |
Refer-a-friend pages often ship as a mailto link or a shared Google Form—then growth asks for fraud checks, campaign IDs, and a CSV export finance can reconcile. MuxForms is the boring middle layer: structured submissions in one inbox until referral SaaS is worth the contract.
Embed on `/referrals`, in the customer dashboard, or beside “Share with a colleague” in B2B products. Collect referrer email (or customer id via hidden field from your app shell), friend name and email, and how they know each other so support can spot self-referrals.
Require a consent field confirming the friend expects contact—reduces CAN-SPAM complaints when your nurture sequence emails the referee. Optional personal note helps AEs recognize warm intros vs bulk paste jobs.
Hidden `campaign` and `referral_code` attribute seasonal promos (“Q4 double credit”) and partner-specific links without showing clutter to users. Clone the form per campaign when reporting must stay separate.
Rate limits and Turnstile matter: referral forms are spam magnets because users expect free credits. Honeypot catches naive bots; you still manually verify before paying rewards at low volume.
Notify growth@ or partnerships@; webhook to your referral platform or a Zapier sheet when submission count justifies automation. Same pattern as waitlists—start inbox-first, integrate later.
Distinct from partnership-inquiries (BD deals) and lead-capture (marketing opt-in). Referral rows should tag `referrer_email` ≠ `friend_email` in review so ops rejects obvious duplicates quickly.
Create a form named Growth — Referral submission with these fields, then paste the embed on your page. Embed on /referrals or in-app; rate limit + Turnstile; verify both emails before paying rewards; webhook when volume grows.
| Field | Type | Required |
|---|---|---|
| Your emailreferrer_email | Yes | |
| Your namereferrer_name | text | Yes |
| Friend's namefriend_name | text | Yes |
| Friend's emailfriend_email | Yes | |
| How do you know them?relationship | select | No |
| Why they'd be a good fit (optional)note | textarea | No |
| My friend agreed to be contacted about this referralfriend_consent | consent | Yes |
| Campaigncampaignhidden | text | No |
| Referral codereferral_codehidden | text | No |
| Customer IDcustomer_idhidden | text | No |
| Leave blank_hphidden | text | No |
Illustrative preview—wire your form id after signup.
{
"name": "Growth — Referral submission",
"fields": [
{
"name": "referrer_email",
"label": "Your email",
"type": "email",
"required": true
},
{
"name": "referrer_name",
"label": "Your name",
"type": "text",
"required": true
},
{
"name": "friend_name",
"label": "Friend's name",
"type": "text",
"required": true
},
{
"name": "friend_email",
"label": "Friend's email",
"type": "email",
"required": true
},
{
"name": "relationship",
"label": "How do you know them?",
"type": "select",
"required": false,
"options": [
"Coworker",
"Friend",
"Client",
"Other"
]
},
{
"name": "note",
"label": "Why they'd be a good fit (optional)",
"type": "textarea",
"required": false
},
{
"name": "friend_consent",
"label": "My friend agreed to be contacted about this referral",
"type": "consent",
"required": true
}
]
}<div data-form-id="FORM_UUID"></div> <script src="https://www.muxforms.com/embed.js" defer></script>
Then clone the pattern for the next site or app.
Upgrade to Pro