Set up the AI SDR

About 15 minutes on n8n Cloud (longer on self-hosted n8n, where you first create your own Google OAuth client). Everything you need to go from download to the first drafts, in order. Ticks are saved in this browser so you can come back later.

Before you start

  • n8n (Cloud or self-hosted)
  • Google account: Sheets + Gmail
  • OpenAI API key
  • Your offer, ICP and signature (Config)

1. Pick where it runs

n8n Cloud
  1. Log in to your n8n Cloud workspace.
  2. Workflows → Import from file.
  3. Pick the file(s) in workflow/.
n8n self-hosted
  1. Open your n8n (Docker or npm, v1.x/2.x).
  2. Workflows → Import from file.
  3. Same files; nothing else changes.
ChatGPT or Claude
  1. Create a Custom GPT or Claude Project.
  2. Paste gpt/INSTRUCTIONS.txt.
  3. Upload your sheet or paste rows in.

2. Setup checklist

3. Connect your tools

ServiceNodes that use it
Google SheetsGet New Leads, Update Lead Row, Log Reply
OpenAIResearch & Write, Classify & Draft
GmailCreate Gmail Draft, Get New Replies, Create Reply Draft, Label Processed

In each node, choose Create new credential and sign in (Google uses OAuth; OpenAI takes an API key). n8n stores credentials in your instance, not with us.

What the statuses mean

StatusMeaningYour next step
draftedProspect draft is in GmailReview, edit, send
low_fitBelow your fit thresholdSkip, or lower min_fit_score
reply_draftedReply draft is in the threadReview and send
logged_no_replyUnsubscribe / not interested / OOORespect do-not-contact; follow up on the date logged
errorSee the error columnFix, then set the lead's status back to new (Prospecting) or remove the plugstaff-processed label from the email (Reply Handler), and re-run

Troubleshooting

SymptomFix
Reply Handler misses a replyThe default `gmail_query` only picks up unread inbox emails whose subject contains "re" (replies), outside the Promotions/Social/Updates/Forums tabs. Widen it in Config, or limit it to a label if you route replies with a Gmail filter
Same reply processed twice`processed_label_id` is empty or wrong, so the label isn't applied → paste the right label ID

Guardrails

  • Review every draft before sending. AI can misread a website or a reply.
  • Honour opt-outs immediately: rows with next_action = do not contact must be removed from all future sequences.
  • Cold email law differs by country (GDPR/ePrivacy in the EU/UK, CAN-SPAM in the US). Email business contacts with a legitimate interest, identify yourself, offer an easy opt-out. Not legal advice.
  • Lead data and replies are sent to your LLM provider. Check this fits your privacy policy.