🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Jotform + QuickBooks invoices, Gmail reminders done

Lisa Granqvist Partner Workflow Automation Expert

You close the deal, the client fills out the form… and then invoicing turns into a mini project. Copy details into QuickBooks. Double-check the line item. Send the invoice. Then remember to follow up when it goes overdue.

This Jotform QuickBooks invoices setup hits freelancers and service providers hardest, because cash flow is personal. Agency owners feel it too, especially when a “quick reminder” turns into a messy email thread. The outcome is simple: invoices go out automatically, reminders go out on schedule, and you stop leaking time and money.

Below is the exact workflow logic, the real-world results you can expect, and what you’ll need to run it reliably without babysitting it.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Jotform + QuickBooks invoices, Gmail reminders done

The Problem: Invoices Go Out Late, and Follow-Ups Slip

Manual invoicing breaks in boring, expensive ways. A Jotform submission lands, you tell yourself you’ll “invoice after lunch,” and suddenly it’s tomorrow. Then you need to find the form entry again, retype the customer details into QuickBooks Online, pick the right item, and pray you didn’t fat-finger the email address. After that comes the worst part: chasing. Not because you enjoy it, but because forgetting one reminder can mean waiting an extra week (or longer) to get paid. The work isn’t hard. It’s constant.

It adds up fast. Here’s where it breaks down in day-to-day operations.

  • Re-entering customer and order details from Jotform into QuickBooks takes about 15 minutes per invoice when you include checking and corrections.
  • Invoices go out later than they should, which quietly pushes payments later too.
  • Reminder emails live in someone’s head (or calendar), so follow-ups are inconsistent and easy to miss.
  • When a client replies to an old invoice email thread, it becomes a scavenger hunt to confirm status and next steps.

The Solution: Turn Form Submissions Into Invoices (and Reminders) Automatically

This n8n workflow connects Jotform, QuickBooks Online, and Gmail so the “paperwork” side of selling stops depending on your memory. A new Jotform submission triggers the automation, which cleans up the incoming data, checks QuickBooks to see if the customer already exists, and then updates the profile or creates a new one. Next, it pulls the correct product or service item from QuickBooks, generates the invoice, and emails it out right away. After that, it stores key invoice details in an internal table so n8n can keep track of what’s still unpaid. Every morning at 8 AM, it reviews open invoices, decides who should get a reminder today, sends the email via Gmail, and logs that it was sent.

The workflow starts with a form submission (or a daily 8 AM schedule for reminders). In the middle, QuickBooks handles customers, items, and invoice creation while n8n keeps a clean tracking record. At the end, clients receive the invoice and follow-ups automatically, and you receive a short reminder summary email.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you get 15 paid inquiries a week through Jotform and you invoice every one. Manually, it’s maybe 15 minutes to create and send each QuickBooks invoice plus another 10 minutes later to check status and send a follow-up, which is about 6 hours a week. With this workflow, you spend about 5 minutes setting up the form mapping once, then invoicing is automatic and the 8 AM reminder run handles follow-ups. You basically get your afternoons back.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Jotform to collect customer and order details
  • QuickBooks Online to create customers, items, invoices
  • Gmail to send reminder emails and summaries
  • OpenAI API key (get it from the OpenAI API dashboard)

Skill level: Intermediate. You’ll connect accounts, map form fields, and paste a table ID for invoice tracking.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A Jotform submission triggers the invoice path. When the form is submitted, n8n receives the payload through a webhook and quickly checks that the required fields are present.

Customer details get cleaned up and matched in QuickBooks. The workflow normalizes the submission (formatting, missing fields, and naming), then searches QuickBooks Online for an existing customer. If one is found, it updates key fields like billing address; if not, it creates a new customer profile.

The correct item is pulled, then the invoice is created and emailed. Based on the selected product or service, the workflow retrieves the matching QuickBooks item, generates the invoice record, and sends it via QuickBooks email so it looks consistent and professional.

A tracking record is stored so reminders are automatic. Invoice ID, remaining amount, currency, reminder counts, and the last sent time are stored in a data table. Every morning at 8 AM, n8n loops through unpaid invoices, fetches current invoice details from QuickBooks, then sends Gmail reminders when the timing and limits say it’s time.

You can easily modify reminder intervals to match your payment terms based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

This workflow starts when a form submission hits the webhook. Configure Incoming Form Webhook to accept incoming POST requests from your form tool.

  1. Add and open Incoming Form Webhook.
  2. Set HTTP Method to POST.
  3. Set Path to ebee0263-fc61-414f-a9cc-faf3269ce30d.
  4. Copy the production URL and paste it into your form platform’s webhook settings.

Step 2: Configure the Schedule Trigger

Daily reminders are driven by a schedule. Daily Reminder Trigger runs every morning and feeds the reminder processing branch.

  1. Add and open Daily Reminder Trigger.
  2. Set the schedule rule to run daily at 8 (triggerAtHour).
  3. Confirm it connects to Set Reminder Settings as shown in the workflow.

Step 3: Connect QuickBooks

QuickBooks is the primary system for customer and invoice operations. Multiple nodes use the same OAuth connection.

  1. Open any QuickBooks node (e.g., Lookup Customer).
  2. Credential Required: Connect your quickBooksOAuth2Api credentials.
  3. Apply the same credentials to the following nodes: Fetch Product Item, Generate Invoice Record, Dispatch Invoice Email, Lookup Customer, Create Customer Profile, Revise Customer Profile, and Fetch Invoice Details.

Execution Flow: Incoming Form WebhookNormalize PayloadLookup CustomerValidate SubmissionRevise Customer Profile or Create Customer ProfileAppend Customer ID.

Step 4: Set Up Data Normalization and Customer/Product Linking

This step prepares consistent data for customer creation and invoice creation.

  1. In Normalize Payload, keep the provided JavaScript Code to extract address and customer fields from $input.first().json.body.
  2. In Lookup Customer, set the filter query to =Where PrimaryEmailAddr = '{{ $json.customer.email }}'.
  3. In Validate Submission, ensure the conditions check {{$json}} and {{$json.Id}} exist.
  4. In Create Customer Profile, map the fields using expressions like {{ $('Normalize Payload').item.json.customer.name }} and address fields from Normalize Payload.
  5. In Revise Customer Profile, keep customerId as {{ $json.Id }} and reuse the same mapped fields.
  6. In Append Customer ID, keep the JS code that merges the customer ID into the normalized payload.
  7. In Fetch Product Item, keep Resource item, Operation getAll, Limit 1, and the filter query =WHERE name = '{{ $json.item.name }}'.
  8. In Append Item ID, keep the JS code that merges the item ID into the payload.

Step 5: Configure Invoice Creation and Reminder Storage

This section creates the invoice in QuickBooks, sends it, and stores it for reminders.

  1. In Generate Invoice Record, set Resource to invoice and Operation to create.
  2. Set CustomerRef to {{ $json.customer.id }} and Line → itemId to {{ $json.item.id }}.
  3. In Dispatch Invoice Email, set Email to {{ $('Append Item ID').item.json.customer.email }} and invoiceId to {{ $json.Id }}.
  4. In Set Reminder Settings, keep the raw JSON output: {"dataTableId":"","reminderIntervalsInDays":[2,3,5], isInvoiceTrigger: {{ $json["Day of week"] ? false : true }}}.
  5. In Trigger Source Check, confirm the condition checks {{ $json.isInvoiceTrigger }} to route between invoice storage and reminder retrieval.
  6. In Store Invoice Entry, confirm the data table columns map from Dispatch Invoice Email and the dataTableId uses {{ $('Set Reminder Settings').item.json.dataTableId }}.

Execution Flow: Append Item IDGenerate Invoice RecordDispatch Invoice EmailSet Reminder SettingsTrigger Source CheckStore Invoice Entry.

Step 6: Configure Reminder Processing and AI Summary

The reminder engine pulls entries, evaluates if reminders are due, sends emails, and summarizes the day’s activity.

  1. In Retrieve Invoice Entries, set Operation to get and Return All to true with {{ $('Set Reminder Settings').item.json.dataTableId }}.
  2. In Iterate Invoice List, leave default batch settings to cycle through entries.
  3. In Fetch Invoice Details, set invoiceId to {{ $json.invoiceId }}.
  4. In Route Reminder Logic, keep the “send now” condition expression: {{ $json.Balance > 0 && DateTime.fromISO($('Iterate Invoice List').item.json.updatedAt).plus($('Set Reminder Settings').item.json.reminderIntervalsInDays[$('Iterate Invoice List').item.json.remindersSent], 'days').format('yyyy-MM-dd') == $now.format('yyyy-MM-dd') }}.
  5. In Reminder Limit Check, keep the expression {{ $json.remindersSent >= $('Set Reminder Settings').item.json.reminderIntervalsInDays.length }} to remove or loop invoices.
  6. In Increment Reminder Count, set lastSentAt to {{ $now.toISO() }} and remindersSent to {{ $('Iterate Invoice List').item.json.remindersSent + 1 }}.
  7. In Pull Today's Reminders, keep the filter {{ $now.startOf('day').toUTC().toString() }} and return all matching rows.
  8. In Reminder Summary Agent, set Text to {{ $('Pull Today's Reminders').all() }}.
  9. Open OpenAI Chat Engine and select the model gpt-4o-mini.
  10. Credential Required: Connect your openAiApi credentials to OpenAI Chat Engine. The Reminder Summary Agent uses this model, so credentials must be added to the parent model node, not the agent.

Execution Flow: Retrieve Invoice EntriesIterate Invoice ListFetch Invoice DetailsRoute Reminder LogicSend Reminder NoticeIncrement Reminder CountReminder Limit CheckRemove Invoice Entry or Iterate Invoice List.

Step 7: Configure Email Outputs (Invoices, Reminders, Summary)

Two Gmail nodes handle reminder notifications and daily summaries.

  1. Open Send Reminder Notice and keep Send To as {{ $json.BillEmail.Address }}.
  2. Keep the HTML in Message as provided and the subject Friendly Reminder: Your Invoice is Due Soon – {{ $json.DocNumber }}.
  3. Open Email Reminder Summary and set Send To to your team email (replace [YOUR_EMAIL]).
  4. Keep Message as {{ $json.output }} and subject Summary of today's reminders sent.
  5. Credential Required: Connect your Gmail credentials in both Send Reminder Notice and Email Reminder Summary (these nodes currently have no credentials configured).

⚠️ Common Pitfall: If Gmail credentials are missing or unauthorized, reminders and summaries will silently fail even though QuickBooks operations succeed.

Step 8: Test and Activate Your Workflow

Run end-to-end tests for both the webhook and scheduled reminder flows before activating.

  1. Use Execute Workflow on Incoming Form Webhook and send a real test payload from your form tool.
  2. Confirm a customer is found or created (Lookup CustomerValidate Submission) and an invoice is created and emailed (Generate Invoice RecordDispatch Invoice Email).
  3. Manually run Daily Reminder Trigger to simulate the morning reminder run and confirm Send Reminder Notice emails are sent.
  4. Verify the AI summary email arrives from Email Reminder Summary with HTML output from Reminder Summary Agent.
  5. When successful, switch the workflow to Active to enable production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • QuickBooks Online credentials can expire or need specific permissions. If things break, check your connected app permissions in QuickBooks (and the token status in n8n credentials) first.
  • If you’re using scheduled reminders at 8 AM or looping through many invoices, processing times vary. Bump up any waits (or reduce batch size) if downstream QuickBooks checks fail on empty or delayed responses.
  • Gmail reminder copy can sound generic if you never touch it. Edit the “Send Reminder Notice” email content early, and keep it consistent with your brand voice so clients don’t ignore it.

Frequently Asked Questions

How long does it take to set up this Jotform QuickBooks invoices automation?

About an hour if your accounts and invoice items are already set up.

Do I need coding skills to automate Jotform QuickBooks invoices?

No. You’ll mostly connect accounts and map fields from the form to QuickBooks.

Is n8n free to use for this Jotform QuickBooks invoices workflow?

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 OpenAI API costs (usually a few dollars a month for light usage).

Where can I host n8n to run this automation?

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.

Can I customize this Jotform QuickBooks invoices automation for different reminder timing?

Yes, and you should. Update the “Set Reminder Settings” node to change intervals (the default is 2 days, then 3, then 5), and point it at your own data table ID. Common customizations include adding a “final notice” template, skipping reminders for specific clients, and changing the daily schedule trigger time.

Why is my QuickBooks Online connection failing in this workflow?

Usually it’s expired credentials in n8n, so reconnect the QuickBooks Online credential and try again. If that’s not it, check that the QuickBooks company file is the right one and the connected user has permission to create customers and invoices. Rate limits can also show up when you process a big backlog, so reducing batch size in the loop often fixes it. Honestly, most “random” failures are just permission scope or token refresh issues.

How many invoices can this Jotform QuickBooks invoices automation handle?

On n8n Cloud, it depends on your execution limit, but most small teams run hundreds of invoices a month without issue. If you self-host, there’s no fixed execution cap; the practical limit is your server and QuickBooks API responsiveness.

Is this Jotform QuickBooks invoices automation better than using Zapier or Make?

Sometimes. n8n is a better fit when you want a tracking table for reminders, branching logic for “send/skip/delete,” and the option to self-host for high volume without per-task pricing. Zapier or Make can be faster for a basic “form → invoice” push, but chasing logic gets messy. If you want the reminders plus auditability, n8n tends to feel sturdier. Talk to an automation expert if you’re deciding between platforms.

Once this is running, invoicing stops being a task you “get around to.” The workflow handles the repetitive follow-ups, and you keep the relationship (and the cash flow) moving.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal