Source wiring
How to point each real-world source at Switchyard. The parser auto-resolves by slug first, then by source kind — see LeadParserResolver for the routing rules.
ScopeForged contact form (or any brand site)
scopeforged-formwebhookPoint your contact form's submit handler at the bearer API. Standard fields (name, email, message, optional company, budget, timeline, service) parse without a field map. For non-matching field names, use kind generic-webhook with a field_mapping.
// In your Next.js route handler / Express handler:
await fetch('https://api.switchyard.philiprehberger.com/v1/leads', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + process.env.SWITCHYARD_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
source_slug: 'scopeforged-form',
payload: formData,
}),
});Upwork notification emails
upwork-emailemailForward Upwork notification emails to a mail-to-webhook service (Postmark inbound, SendGrid Parse, Cloudflare Email Workers). Configure the destination as the signed inbound endpoint.
The parser extracts the job title from the for: "..." quoted line, the description between Job description: and Skills:, and the budget from Budget: / Hourly: lines.
Expected payload shape from the mail processor:
{
"subject": "[Upwork] You have a new invitation",
"body": "...full email body...",
"from": { "email": "noreply@upwork.com", "name": "Upwork" }
}Fiverr message notifications
fiverr-emailemailSame mail-to-webhook pipeline as Upwork. The parser extracts the buyer name from the subject ("You received a message from X" / "X sent you a message"), strips the Fiverr footer boilerplate, and finds dollar budgets + within N weeks / ASAP timelines.
Generic webhook / Tally / Typeform / Zapier
any-webhook-slugwebhookFor any source whose payload shape isn't already covered by a built-in parser, create a source with kind webhook and set a field_mapping:
{
"contact": {
"name": "fullName",
"email": "emailAddress",
"company": "org",
"phone": "phoneNumber"
},
"job": {
"title": "subject",
"body": "message",
"budget_text": "budget",
"timeline_text": "deadline"
}
}Dotted paths are supported (e.g. payload.lead.email). Fields not in the mapping are silently dropped.
Manual paste-in (operator entry)
manual-pastemanualSome inquiries arrive in places that can't webhook out — LinkedIn DMs, referral texts, hand-typed emails. The Filament admin includes a paste-in form (under Lead sources) where you pick a source and paste the raw text. The parser runs against the pasted body the same way it would against an inbound webhook.