Opening Problem Statement
Meet Julia, a marketing manager for a retail chain who runs drive-to-store coupon campaigns to attract new customers. Every day, she receives dozens of leads from web forms, which she manually inputs into SuiteCRM, assigns coupons from a spreadsheet, and tracks duplicates herself. This tedious process wastes 2-3 hours daily, delays coupon delivery, and causes occasional mistakes—like sending duplicate coupons that upset customers and reduce campaign effectiveness.
Julia’s struggle is all too common for businesses juggling lead data across multiple platforms without seamless automation. What if there was a way to create leads automatically with their unique coupon codes, verify duplicates before entry, and keep records synchronized—all without manual work?
What This Automation Does
This n8n workflow solves Julia’s problem by automating the entire drive-to-store lead generation and coupon assignment process using SuiteCRM and Google Sheets integration. Here’s exactly what happens:
- Lead form submission triggers the workflow capturing Name, Surname, Email, and Phone.
- Checks Google Sheets for duplicate leads based on Email to prevent re-issuing coupons.
- Assigns the first available coupon code from a Google Sheet dedicated to tracking coupon availability.
- Creates a new Lead in SuiteCRM with all submitted info and the assigned coupon.
- Updates the Google Sheet to mark the coupon as used and logs lead details with timestamp.
- Sends automated webhooks response confirming success or duplicate detection back to the calling form system.
By automating these steps, Julia and her team save 2-3 hours a day on data entry and coupon management, reduce errors dramatically, and accelerate lead response times for better customer engagement.
Prerequisites ⚙️
- n8n account (cloud or self-hosted) 🔑
- SuiteCRM instance (7.14.x or 8.x) with API and OAuth2 Client Credentials configured 🔐
- Google Sheets account with spreadsheet prepared (coupon codes in “COUPON” column) 📊
- External or embedded web form to submit lead data (Name, Surname, Email, Phone) 💬
Step-by-Step Guide
Step 1: Create the Google Sheet with Coupons
Navigate to Google Sheets and create a new sheet for coupon tracking. Add columns like COUPON, EMAIL, NAME, SURNAME, PHONE, and ID LEAD. Populate the COUPON column with your unique coupon codes only.
You should see a clear list of coupons ready to be assigned upon lead capture.
Common mistake: Leaving the coupon column empty or not marking assigned coupons later will cause errors.
Step 2: Configure the Web Form Submission Trigger
In n8n, add a Form Trigger node (“On form submission”). Set your form title as “Landing” and define required fields for Name, Surname, Email (type email), and Phone.
Test the form submission to ensure n8n receives the data.
Outcome: This node listens for new lead data input from your web form.
Step 3: Map Incoming Form Fields
Add a Set node (“Form Fields”) to structure the incoming JSON data. Map Name, Surname, Email, and Phone exactly from the trigger node values.
This centralizes the data for use in later nodes.
Step 4: Check for Duplicate Leads in Google Sheets
Use a Google Sheets node (“Duplicate Lead?”) to search your coupon sheet by the Email field for existing entries.
Configure it to lookup by the EMAIL column and use the incoming email value as the lookup value.
This prevents issuing coupons to existing leads.
Step 5: Conditional Branch on Duplicate Check
Add an If node (“Is Duplicate?”). Check if the lookup query returned a non-empty email indicating a duplicate.
If the condition is true (duplicate found), route to the “Respond KO” node to notify the source system of duplication.
If false (no duplicate), continue to assign a coupon.
Step 6: Assign First Available Coupon
Add a Google Sheets node (“Get Coupon”) to fetch the first unassigned coupon. Configure to return the first match where the coupon is available.
This coupon will be linked to the new lead.
Step 7: Authenticate SuiteCRM API Request
Add an HTTP Request node (“Token SuiteCRM”), POST request to https://SUITECRMURL/Api/access_token with client credentials to get an OAuth2 access token.
Replace SUITECRMURL, CLIENTID, and CLIENTSECRET with your actual SuiteCRM API details.
Example body parameters:
{
"grant_type": "client_credentials",
"client_id": "CLIENTID",
"client_secret": "CLIENTSECRET"
}Step 8: Create Lead in SuiteCRM with Coupon
Add an HTTP Request node (“Create Lead SuiteCRM”) to POST to the SuiteCRM Leads module API endpoint with the new lead’s personal details and assigned coupon code.
Pass the access token in the header Authorization: Bearer token.
The JSON body resembles:
{
"data": {
"type": "Leads",
"attributes": {
"first_name": "{{ $('Form Fields').item.json.Name }}",
"last_name": "{{ $('Form Fields').item.json.Surname }}",
"email1": "{{ $('Form Fields').item.json.Email }}",
"phone_mobile": "{{ $('Form Fields').item.json.Phone }}",
"coupon_c": "{{ $('Get Coupon').item.json.COUPON }}"
}
}
}Step 9: Update Google Sheet to Mark Coupon Used and Log Lead
Add a Google Sheets node (“Update Lead”) to update the coupon row marking it as assigned and add lead details like ID, date, and contact info.
This step ensures coupon tracking correctness.
Step 10: Webhook Response to Source System
Add Respond to Webhook nodes to send back JSON confirmation to the original form submission system.
If lead is created: {"result": "OK", "reason": "lead created"}
If duplicate found: {"result": "KO", "reason": "duplicate lead"}
Customizations ✏️
- Change Coupon Criteria: In the “Get Coupon” Google Sheets node, update filters to assign coupons by region or store code if your coupons are segmented.
- Additional Lead Fields: Extend the JSON body in “Create Lead SuiteCRM” node to include more custom fields like campaign source, lead status or notes.
- Use Different CRM: Replace SuiteCRM HTTP Request nodes with APIs for Salesforce or HubSpot, adjusting authentication and field mappings accordingly.
- Form Field Validation: Add an n8n Function node before “Form Fields” to validate phone number formats or email syntax.
- Send Confirmation Email: Include a Gmail node (if desired) after lead creation to email the coupon and thank-you message to the lead.
Troubleshooting 🔧
Problem: Duplicate leads still created despite checks
Cause: Google Sheets “Duplicate Lead?” node’s lookup column misspelled or mismatch between email cases.
Solution: Verify column name “EMAIL” matches exactly in Google Sheets. Enable case-insensitive search or add a lower-case transformation in the lookup value.
Problem: SuiteCRM API returns 401 Unauthorized
Cause: Incorrect client credentials or token expiration not handled.
Solution: Double-check Client ID and Secret in “Token SuiteCRM” node. Make sure token is refreshed for each request and your SuiteCRM OAuth2 client is properly configured.
Problem: Coupon not assigned or Google Sheets not updating
Cause: “Get Coupon” or “Update Lead” nodes not connected properly or Google Sheets credentials expired.
Solution: Confirm Google Sheets credentials in n8n, reauthenticate if needed, and ensure nodes are triggering in correct order.
Pre-Production Checklist ✅
- Confirm Google Sheets structure matches node configurations.
- Test Web Form submissions trigger workflow and data flows as expected.
- Verify SuiteCRM OAuth2 client credentials and API access.
- Run test lead submissions to check coupon assignment and duplicate detection.
- Back up Google Sheet data before deploying live updates.
Deployment Guide
Activate your workflow in n8n after completing testing. If using an external form, update the form’s webhook URL to point to the n8n webhook trigger node path.
Monitor execution logs in n8n to catch any failures or errors during lead creation and coupon assignment. Adjust nodes or credentials as needed.
FAQs
Can I use this workflow with a different CRM?
Yes, by modifying the HTTP Request nodes to match your CRM’s API and authentication method, adapting data field mappings accordingly.
Does this consume API credits?
Yes, each SuiteCRM API call counts toward your rate limits; monitor usage if on a restricted plan.
Is my customer data safe?
Your data remains within your configured services (SuiteCRM, Google Sheets, n8n). Secure your instance and credentials to protect data privacy.
Can this handle large lead volumes?
n8n can handle high volumes depending on hosting. Consider scaling your instance or batching leads if needed.
Conclusion
By following this detailed guide, you transformed manual lead entry and coupon management into a fully automated, reliable process using n8n, SuiteCRM, and Google Sheets integration. This workflow helps you save hours daily, reduce costly errors, and boost lead response times to maximize campaign results.
Next, consider automating coupon expiration reminders or integrating SMS notifications for instant lead follow-up.
Start building smarter lead management workflows today and watch your marketing efficiency soar!