{ "name": "Spintax cold-email bridge — unique copy per lead (and per product)", "nodes": [ { "id": "sx-trigger", "name": "Manual Workflow Trigger", "type": "n8n-nodes-base.manualTrigger", "position": [ 0, 260 ], "parameters": {}, "typeVersion": 1 }, { "id": "sx-leads", "name": "Load Sample Leads", "type": "n8n-nodes-base.code", "position": [ 220, 260 ], "parameters": { "jsCode": "// REPLACE ME with your real source: Google Sheets, Airtable, your CRM…\n// Every top-level string/number/boolean field of an item automatically\n// becomes a %variable% in the Spintax node downstream.\nreturn [\n { json: { first_name: 'Ada', company: 'Brightline Gear', category: 'outdoor equipment', product: 'Trekker 45L backpack', price: '$129', in_stock: 14, has_discount: 'yes' } },\n { json: { first_name: 'Grace', company: 'Nordic Home', category: 'kitchenware', product: 'cast-iron skillet set', price: '$89', in_stock: 1, has_discount: '' } },\n { json: { first_name: 'Linus', company: 'Pixelparts', category: 'PC components', product: 'silent GPU cooler', price: '$59', in_stock: 230, has_discount: 'yes' } },\n];" }, "typeVersion": 2 }, { "id": "sx-subject", "name": "Generate Email Subject", "type": "n8n-nodes-spintax.spintax", "position": [ 440, 260 ], "parameters": { "operation": "render", "template": "{Quick|One|Small} {question|idea} for %company% — the %product% {listing|page}", "seed": "={{ $json.company }}:subject", "outputField": "subject" }, "typeVersion": 1 }, { "id": "sx-body", "name": "Generate Email Body", "type": "n8n-nodes-spintax.spintax", "position": [ 660, 260 ], "parameters": { "operation": "render", "template": "{Hi|Hello|Hey} %first_name%,\n\n{We noticed|Saw that|Noticed} %company% {carries|sells|stocks} %category% — {nice|solid|great} {lineup|selection}.\n\n{Quick|One} {idea|thought} about your %product% {listing|page}: {?has_discount?with the {current|running} {promo|discount} at %price% it {deserves|warrants}|at %price% it {deserves|warrants}} {fresh|distinct} copy per {storefront|channel} — and with %in_stock% {plural %in_stock%: unit|units} in stock, {now|this week} is the {right|perfect} time.\n\n{Worth|Open to} a {quick|15-minute} {look|chat} {this|next} week?\n\n{Best|Cheers|Regards},\n{Alex|Sam} from Spintax", "seed": "={{ $json.company }}:body", "outputField": "body" }, "typeVersion": 1 }, { "id": "sx-send", "name": "Placeholder for Email Send Tool", "type": "n8n-nodes-base.noOp", "position": [ 912, 256 ], "parameters": {}, "typeVersion": 1 }, { "parameters": { "content": "## Spintax cold-email bridge — unique copy per lead (and per product)\n\n### How it works\n\n1. Sending platforms parse flat `{a|b|c}` at best, so this flow renders the full syntax first and hands your sender finished text.\n2. Lead rows come in, and every top-level field of a row becomes a `%variable%` the template can address.\n3. Each lead gets its own subject and body drawn from one template — no model call and no per-lead copywriting.\n4. The flow ends at a placeholder node where your own sending integration connects.\n\n### Setup steps\n\n- [ ] Install the community node `n8n-nodes-spintax`.\n- [ ] Replace **Load Sample Leads** with your real source.\n- [ ] Edit the templates in the two Spintax nodes to match your offer.\n- [ ] Swap the placeholder for your sending node and run it.\n\n### Customization\n\nPost-processing is on, so spacing and capitalisation come out clean after a variable drops in. Turn on Protect Placeholders if your sender injects its own `{{ }}` merge tags and you want them left untouched.", "width": 480, "height": 752 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -608, 48 ], "id": "b2c3d4e5-0000-4a11-9c01-5f1a2b3c4d00", "name": "Sticky Note" }, { "parameters": { "content": "## Start and load leads\n\nThe sample code node stands in for your real source — a CRM, a sheet or a database query. Every top-level field of a row becomes a `%variable%`.", "width": 416, "height": 336, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -48, 80 ], "id": "b2c3d4e5-0001-4a11-9c01-5f1a2b3c4d01", "name": "Sticky Note1" }, { "parameters": { "content": "## Render, then hand off to your sender\n\nTwo Spintax nodes render one unique subject and body per lead: conditionals switch copy on a data field, plurals keep counts grammatical. Replace the pass-through with your sending node — it receives finished text, so nothing downstream understands spintax.", "width": 704, "height": 336, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 384, 80 ], "id": "b2c3d4e5-0002-4a11-9c01-5f1a2b3c4d02", "name": "Sticky Note2" } ], "connections": { "Generate Email Body": { "main": [ [ { "node": "Placeholder for Email Send Tool", "type": "main", "index": 0 } ] ] }, "Generate Email Subject": { "main": [ [ { "node": "Generate Email Body", "type": "main", "index": 0 } ] ] }, "Manual Workflow Trigger": { "main": [ [ { "node": "Load Sample Leads", "type": "main", "index": 0 } ] ] }, "Load Sample Leads": { "main": [ [ { "node": "Generate Email Subject", "type": "main", "index": 0 } ] ] } }, "settings": {}, "pinData": {} }