How to Create, Update, and Get an e-goi Subscriber in n8n
Automating subscriber management with n8n and e-goi is fast and reliable. In this tutorial you’ll build a simple workflow that creates a contact, updates the contact’s data, and then retrieves the contact to verify the changes. The pattern is ideal for signups, CRM syncs, and list management tasks.
What you’ll build
The workflow uses four nodes:
- Manual Trigger (starts the workflow)
- e-goi node — Create contact
- e-goi node — Update contact
- e-goi node — Get contact
This is a linear flow: trigger → create → update → get. The example mirrors the n8n template that passes the list ID and uses the returned contact ID from one node into the next via expressions.
Prerequisites
- An n8n instance (cloud or self-hosted)
- An e-goi account and API credentials
- Basic familiarity with n8n expressions
Step-by-step setup
1. Add a Manual Trigger node
Start with a Manual Trigger (or another trigger of your choice). This enables you to test the workflow interactively.
2. Add the e-goi node to create a contact
Add an e-goi node and configure the operation to create a contact. Example fields used in the template:
list: 1
email: nathan@testmail.com
additionalFields: { first_name: "Nathan" }
Make sure you configure the e-goi credentials in n8n (API key or OAuth depending on your setup). The Create call returns a JSON payload that includes the created contact’s ID — typically available at json.base.contact_id
in the node output.
3. Add the e-goi node to update the contact
Add another e-goi node configured for the update operation. Instead of hardcoding the list or contactId, use expressions to read values from the previous node. The template uses these expressions:
list: ={{$node["e-goi"].parameter["list"]}}
contactId: ={{$node["e-goi"].json["base"]["contact_id"]}}
updateFields: { first_name: "Nat" }
Notes:
- If you need to update multiple fields, populate
updateFields
accordingly. - Use the correct JSON path from the create node output — in this template the create node stores the contact ID at
base.contact_id
.
4. Add the e-goi node to get the contact
Add a final e-goi node using the get operation to retrieve the contact after update. Use expressions to pass list and contactId from earlier nodes, for example:
list: ={{$node["e-goi"].parameter["list"]}}
contactId: ={{$node["e-goi1"].json["base"]["contact_id"]}}
operation: get
The Get node will return the full contact object. Inspect the output in the execution panel to confirm your updated first name and other fields.
Expressions and data mapping explained
Expressions make your workflow dynamic. The template demonstrates two common patterns:
- Reading a configured parameter from a previous node:
{{$node["e-goi"].parameter["list"]}}
- Reading a returned value from the node JSON output:
{{$node["e-goi"].json["base"]["contact_id"]}}
Use the expression editor in n8n to test and validate the paths. If a value is missing, run the create node separately first and inspect its raw output in the execution log to find the correct path.
Testing and verifying
- Click Execute on the Manual Trigger to run the workflow.
- Open each node’s execution output: confirm the create node returns a contact_id.
- Confirm the update node response indicates success (or contains the updated object).
- Check the get node output to verify the updated data (first name updated to “Nat”).
Troubleshooting & common pitfalls
Missing contact_id
If the create node output doesn’t include contact_id
, inspect the returned JSON path. The node may return the ID under a different key (check json
and json.base
), or an error occurred during creation.
Invalid list ID
Ensure the list ID exists in e-goi and your API user has access to it. Use numeric IDs or the exact identifier required by the API.
API rate limits or network errors
Handle transient API errors by adding a Retry or Error Workflow, or use a Wait node between calls if you suspect propagation delays.
Duplicate contacts
Decide on your duplicate strategy: check for existing contact (search endpoint) before create, or rely on e-goi’s deduplication rules. You can add a conditional (IF) node to branch the workflow if a contact already exists.
Enhancements & best practices
- Use a Set node to centralize and validate data before creating the contact (email format, required fields).
- Add an IF node to check the create response and only run update/get if creation succeeded.
- Store list IDs and API credentials in n8n credentials or environment variables to avoid hardcoding.
- Log responses or push them to a database for auditability.
- Respect GDPR: capture and store consent fields and opt-in timestamps.
Template JSON (concept)
The template behind this workflow wires nodes together so outputs flow from create → update → get. Here is a conceptual view (simplified):
{
"nodes": [
{ "type": "Manual Trigger" },
{ "type": "e-goi", "operation": "create", "parameters": { "email": "nathan@testmail.com", "list": 1 } },
{ "type": "e-goi", "operation": "update", "parameters": { "contactId": "={{$node[\"e-goi\"].json.base.contact_id}}" } },
{ "type": "e-goi", "operation": "get", "parameters": { "contactId": "={{$node[\"e-goi1\"].json.base.contact_id}}" } }
]
}
Security and compliance
Keep API keys secure in n8n credentials. If you’re storing contact data, encrypt or securely store PII and ensure your workflow respects local data protection regulations.
Wrap-up
This simple pattern — create, update, get — scales to many use cases: onboarding emails, CRM enrichment, and list hygiene. With n8n expressions and e-goi nodes, you can automate reliable subscriber handling without custom code.
Try it now
Import the workflow template into your n8n instance, connect your e-goi credentials, and click Execute on the Manual Trigger. Inspect each node result in the execution log to confirm the flow. If you want a customized version (search/conditional flows, upsert behavior, or integrations with other systems), reply with your use case and I’ll help adapt the workflow.