Dubsado logo

Dubsado automation · runs weekly

Find unsigned Dubsado contracts and draft reminders

A proposal was accepted, the contract went out, and then the client went quiet. In Dubsado you find out by opening projects one by one, and the projects that did get signed still sit in a lead status until you move them.

Cotlet does it in your own Dubsado account with list_forms, get_project and update_project_status, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Official options

Can Dubsado do this on its own?

Dubsado has no API to list contracts by status (checked 12 Oct 2026), and its Zapier Contract Signed trigger fires only after a signature. Inside Dubsado, a Flow (Premier) can run Update Project Status once the client signs the project contract, and its "after a form is not completed" reminders only watch forms added earlier in that same Flow. Starter has no Flows. A form expiration date (Settings > General settings in the form builder) can send Form Reminder emails before the deadline, but only on forms where you set one.

By hand

How you do it in Dubsado today

  1. On the Dubsado Projects page, click Display, choose Table, and turn on the Contract column under Shown in table to see each project's contract status at a glance.
  2. Open a project, click View details, and check the Contract row of the Project info card; the Forms tab shows the same contract with its own status.
  3. To nudge the client, select the contract in the Forms tab and choose Share > Send to email it again, or Share > Copy link to paste the link into your own message.
  4. Countersignatures are separate: Forms > Action Required and the Waiting on You section of the Home page list contracts that need your signature.
  5. After a signature, open the project and change its status from a lead status to a job status by hand. Each step lives on a different screen, so a quiet client or a forgotten countersign can sit for weeks.

With an agent

How to find unsigned Dubsado contracts and draft reminders

Prompt

Which contracts did I send that the client has not signed yet? Draft a short nudge for each, list the ones waiting on my countersignature, and move every project whose contract is signed to my "Booked" job status.
  1. 01

    Split the two kinds of waiting

    list_forms with type contract returns three groups. Sent and viewed contracts wait for the client. Action required ones wait for you, and they go to a separate list with the project name, since Dubsado does not tell the client when you countersign.

  2. 02

    Read the project before writing anything

    get_project gives the client, the project date and the proposal and invoice next to the contract. A contract for a date next month ranks above one for next year, and a project whose deposit is already paid is noted, because that client is likely to sign once reminded.

  3. 03

    Skip what should not be chased

    Contracts sent in the last two days are left alone. A project with several contracts or a sub-agreement is reported for you to judge, since the second signer may be a different person from the client.

  4. 04

    Draft, never send

    Each nudge is two or three sentences in your voice, naming the project and date, with a reminder that the link is in the earlier email. Cotlet has no tool that emails it, so you paste it into Dubsado or resend the contract there.

  5. 05

    Move signed leads to the job status

    Completed contracts whose project is still in a lead status go to your job status, "Booked" here, with update_project_status. Projects already in a job status are skipped, which keeps the run from fighting a Flow that moved them first.

What you get back

Example data

Waiting on the client (3):
"Acme rebrand", Design services contract, viewed, project date 3 Nov 2026. Draft: "Hi Dana, a quick nudge on the Acme rebrand contract so we can hold 3 November for you..."
"Grant headshots", Photography contract, sent 6 Oct, not opened yet.
"Lopez wedding", contract plus a sub-agreement for the venue; check who still has to sign.
Waiting on you: countersign "Nair wedding" (client signed 10 Oct).
Moved to Booked: "Spring brand shoot" and "Kim family session" (contracts signed this week).

Other ways to ask

  • Only contracts for projects dated in the next 30 days, most urgent first.
  • List the contracts I still have to countersign, nothing else.
  • Every Friday, move projects with a signed contract from "Contract Pending" to "Booked" and tell me which ones you moved.
  • Draft nudges for contracts unsigned for more than 10 days, in a warmer tone for wedding clients.

Before you automate it

What Dubsado allows, and what to know first

  • A Dubsado contract takes one client signature; when two people must sign, each extra signer gets a sub-agreement.
  • Once any signature is on a Dubsado contract, the client's or yours, it locks and cannot be edited; changes go into a sub-agreement or a new copy that is signed again.
  • Dubsado emails the client a copy of the signed contract automatically and this email cannot be turned off, while countersigning sends the client nothing.
  • Dubsado's Flow trigger "after the contract is signed" watches the client signature only and ignores sub-agreements, and resending a form resets every "not completed" timer watching it.
  • Archiving a Dubsado project in a lead status closes its open invoices, while archiving a job-status project leaves them open, so a signed client still parked in a lead status should be moved before any cleanup.

update_project_status changes only your own Dubsado data and reach no one else, so it runs without asking first.

Sources: Dubsado Help: Send a contract · Dubsado Help: Countersign a contract or sub-agreement · Dubsado Help: Flow triggers, client progress · Dubsado Help: The Projects page · Dubsado Help: Set an expiration date on a form

REST

Call list_forms from a script

curl

curl https://cotlet.dev/api/v1/dubsado/list_forms \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"contract","status":["sent","viewed","action_required"]}'

Example response

{
  "forms": [
    {
      "form_id": "frm_a4410c7e",
      "project_id": "prj_8e15c3a2",
      "project_title": "Acme rebrand",
      "type": "contract",
      "name": "Design services contract",
      "status": "viewed"
    }
  ],
  "next_cursor": null
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is dubsado_list_forms. Example data.

Schedule it in n8n, Make, Zapier or cron

Tools

Dubsado tools this automation uses

Cotlet Dubsado tools used to find unsigned Dubsado contracts and draft reminders
Tool Parameters
list_forms project_id, type, status, limit, cursor
get_project project_id
update_project_status project_id, status
All 14 Dubsado tools with descriptions

Frequently asked questions

Should I use a Dubsado Flow instead?

For projects that run on a Flow, a fixed rule like "remind after 3 days, move to Booked after signing" works well inside Dubsado on Premier. The agent covers contracts sent by hand, Starter accounts, and the nudges that need a personal line.

Can I set a deadline for signing?

Yes, in Dubsado. Set an expiration date under Settings > General settings in the form builder and add reminders; they use the Form Reminder email template. The client cannot submit the form after the date passes until you change it, and reminders start counting when the form is added to the project, even before you send it.

Give your agent access to Dubsado.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Dubsado.