Keap + Lob: verified addresses, fewer returned mail
Returned mail is the kind of problem that feels small, until you’re staring at a stack of wasted postcards and a CRM full of “maybe” addresses. It’s not just printing costs. It’s the follow-up time, the awkward “we tried to reach you” gap, and the quiet doubt about your list quality. This Keap Lob verification automation fixes that at the source.
Marketing managers notice it when campaigns underperform for no obvious reason. A business owner feels it when budgets get tight and every mailed piece has to count. And an ops lead? They’re the one cleaning up the mess in Keap after the fact.
This workflow checks every new Keap contact’s mailing address using Lob, then writes the deliverability status back to Keap so you can mail with confidence. You’ll see what it does, why it matters, and how to tailor the “deliverable vs not” outcome to your process.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Keap + Lob: verified addresses, fewer returned mail
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Address Fields", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Address Verification"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/keap.png' width='40' height='40' /></div><br/>Update Keap - Deliverable"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/keap.png' width='40' height='40' /></div><br/>Update Keap - NOT Deliverable"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>CRM Webhook Trigger"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n5 --> n2
n5 --> n3
n0 --> n1
n4 --> n0
n1 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 decision
class n1,n4 api
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n4 customIcon
Why This Matters: Bad Addresses Quietly Kill Direct Mail
Direct mail looks simple on the surface. Export a list, send it to your mail provider, track responses. But if your Keap database is full of typos, missing unit numbers, old ZIP codes, or half-complete address lines, everything downstream gets harder. You pay to print pieces that never arrive. Sales follows up leads who never saw the offer. Then someone has to play detective, digging through contact records to figure out what went wrong. Honestly, it’s exhausting because it repeats every campaign.
It adds up fast. Here’s where it usually breaks down.
- People enter addresses inconsistently in Keap, so your exports end up messy and hard to trust.
- Returned mail forces last-minute list cleanup right when you should be focused on creative and offer testing.
- Manual spot-checking catches a few obvious errors, but it misses the “looks fine, still undeliverable” cases.
- Your team ends up re-verifying the same contacts again and again, because no one marks deliverability in the CRM.
What You’ll Build: Automatic Address Verification Inside Keap
This workflow turns address verification into a background habit instead of a frantic pre-campaign chore. When a new contact is created in Keap/Infusionsoft, Keap triggers a webhook to n8n with the contact’s address details. n8n sends that address to Lob’s verification service using an HTTP request, then interprets the result. If Lob says the address is deliverable, the workflow updates the contact back in Keap (for example, setting a “Deliverable” flag or a custom status field). If the address is not deliverable, you can mark it clearly, route it for review, or hold it back from direct mail lists. Same contact record. Clear outcome.
The workflow starts at the moment data enters your CRM, not weeks later when you’re trying to launch a campaign. Lob verifies the mailing address in seconds, and n8n writes the result where your team will actually see it. That means fewer surprises when you pull a list for postcards or letters.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you add about 100 new contacts a week to Keap from forms, referrals, and manual entry. If someone spends even 2 minutes checking each address before a mail drop, that’s roughly 3 hours of tedious work (and it still won’t be perfect). With this workflow, the “check” happens automatically as the contact is created. You’re left with a simple filter in Keap: deliverable, or needs attention.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Keap/Infusionsoft for the contact records and triggers.
- Lob to verify address deliverability.
- Keap API key (get it from your Keap app settings).
Skill level: Beginner. You’ll connect accounts, paste API keys, and map a few fields (street, city, ZIP).
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
Keap triggers the workflow when a new contact is created. A Keap automation (or built-in webhook setup) sends the contact payload into n8n so the check happens immediately.
The address data gets cleaned up and prepared. n8n uses simple “set/edit fields” steps to structure the address lines the way Lob expects, which means fewer failed verification requests.
Lob verifies deliverability. An HTTP Request node sends the address to Lob’s verification endpoint and receives a response that includes whether it’s deliverable (plus helpful details if it isn’t).
Keap is updated with the outcome. An If step splits the flow and writes back a status field to the contact record, so your team can filter, segment, or trigger follow-ups.
You can easily modify what happens to “undeliverable” contacts to fit your process. For example, you might add a note, set a custom field, or push the record to a cleanup sheet. See the full implementation guide below for customization options.
Troubleshooting Tips
- Keap credentials can expire or need specific permissions. If things break, check your Keap app connection and API key status first.
- If you’re using Wait nodes or external processing, timing can vary. Bump up the wait duration if downstream steps run before Lob returns a complete response.
- Lob will reject poorly mapped address fields. Double-check your street line, city, state, and ZIP mapping in the HTTP Request payload before changing anything else.
Quick Answers
About 10–30 minutes if your Keap and Lob accounts are ready.
No. You’ll mostly map fields and connect API keys inside n8n.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Lob usage, which includes free address verifications on some plans.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you probably should. You can change what gets written back to Keap by editing the “set fields” step that prepares the update payload, then adjusting the Keap update request. Common tweaks include setting a custom field like “Address Deliverable,” adding a tag for “Needs Address Fix,” or sending undeliverable contacts to Google Sheets for someone to review. Some teams also trigger a task for a rep to confirm the address on the next call.
Usually it’s an API key issue or a malformed request body. Regenerate your Lob API key, update it in n8n, then confirm your address fields are mapped correctly (especially ZIP and state). If you’re verifying a lot of contacts at once, rate limits can show up too, so spacing requests or batching can help.
Plenty for most small teams. On n8n Cloud, capacity depends on your plan’s monthly executions, and self-hosting depends on your server. Practically, address verification is quick, so the limiting factor is usually how many contacts you create and how you batch imports.
Often, yes, because this kind of workflow benefits from clearer branching (deliverable vs not) and more control over the API request and response. n8n also gives you the option to self-host, which matters if you’re validating lots of contacts during list imports. Zapier and Make can still do it, but you may spend more time working around step limits or customizing the HTTP call. If you want help choosing, Talk to an automation expert. Bring your campaign volume and we’ll sanity-check the best fit.
Once deliverability is stamped into Keap automatically, direct mail stops feeling like a gamble. You get cleaner lists, fewer returns, and a lot less last-minute scrambling.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.