Airtable CRM update form template
Your sales rep just got off a call. The deal moved to negotiation. They need to update the stage, log notes, and set a follow-up date.
In Airtable, that means opening the base, finding the record in a grid of hundreds of rows, editing the right fields, and hoping they don't accidentally change someone else's deal. Or you give everyone editor access and hope for the best.
What you actually want is a link. One URL per deal. The rep clicks it, sees the current values, changes what needs changing, and submits. The record updates in place. No new rows. No grid access required.
That's what this template builds. Below is the full schema, field configuration, conditional logic, and post-submission automation setup for a CRM update workflow in Airtable.
For the general mechanics of how update forms work, start with Airtable form update record. This page is the CRM-specific implementation.
Ready to build this now Filla connects to your Airtable base and lets you create update forms in minutes
Who this workflow is for
This template is built for:
- Sales teams where reps update deal stages after calls, meetings, or demos
- Account managers who log notes, update contact info, or set next steps across open accounts
- Operations teams that need non-technical teammates to update vendor or supplier records without grid access
- External contacts who verify or correct their own information (address, phone, preferred contact method) without seeing the rest of your base
Every one of these breaks if you rely on native Airtable forms, because native forms only create new rows. They can't load an existing record or write changes back to it.
Recommended Airtable CRM schema
This template uses two core tables linked together. If your base already exists with different field names, that's fine. Adapt what's below to match your setup.
Contacts table
| Field | Type | Notes |
|---|---|---|
| Name | Single line text | Primary display field |
| Used for record lookup and notifications | ||
| Phone | Phone number | Updatable by contact or rep |
| Company | Linked record (Companies) | Links to a separate Companies table |
| Job Title | Single line text | Updatable on the form |
| Mailing Address | Long text | Updatable by contact |
| Preferred Contact Method | Single select | Phone, Email, LinkedIn, WhatsApp |
| Contact Owner | Collaborator | Assigned rep, not shown on external forms |
| Tags | Multiple select | Internal categorization |
| Last Updated | Last modified time | Auto-tracked, not on form |
| Update Source | Single line text | Set to "Form" on each submission |
| Edit Link | Formula | "https://app.filla.io/forms/your-form-id/" & RECORD_ID() |
Deals table
| Field | Type | Notes |
|---|---|---|
| Deal Name | Single line text | Primary display field |
| Contact | Linked record (Contacts) | Links to Contacts table |
| Stage | Single select | Lead, Qualified, Proposal, Negotiation, Closed Won, Closed Lost |
| Deal Value | Currency | Updatable by rep |
| Close Date | Date | Expected or actual close |
| Next Follow-Up | Date | Updatable by rep after each interaction |
| Notes | Long text | Rep notes, call summaries |
| Loss Reason | Single select | Visible only on Closed Lost deals |
| Owner | Collaborator | Assigned rep |
| Last Updated | Last modified time | Auto-tracked |
| Update Source | Single line text | Set to "Form" on each submission |
| Edit Link | Formula | "https://app.filla.io/forms/your-form-id/" & RECORD_ID() |
Why two separate forms
Build one update form for Contacts and a separate one for Deals. Combining them into a single form sounds simpler, but it isn't.
Contact update forms go to the contacts themselves. They're external. Deal update forms go to your sales reps. They're internal. The fields shown, the permissions set, and the automations triggered after submission have almost no overlap.
Step-by-step: building the update form with Filla
Step 1: Connect your Airtable base
Go to app.filla.io/signup and create an account. Connect your Airtable base using OAuth. Filla reads your tables, field names, field types, and select options automatically.
If you haven't built your CRM base yet, set it up in Airtable first using the schema above, then connect it to Filla.
Step 2: Create a new form and set it to update mode
From your Filla dashboard, create a new form. Select the table you want to update (Contacts or Deals). Set the form mode to "Update existing record."
In update mode, the form expects a record ID in the URL and loads that record's current field values when opened. Submitting the form patches the existing record rather than creating a new row.
Step 3: Add fields and set permissions
Add the fields you want on the form. For each field, set it to one of three states:
- Read-only: visible for context, not editable. Use this for fields like Name and Email on the Contact form so the person can confirm they're looking at the right record.
- Editable: the user can change this field.
- Hidden: not shown on the form at all. Use this for internal fields like Owner, Tags, and Notes on external-facing forms.
See the "Fields to include" sections below for the full per-form configuration.
Step 4: Generate per-record edit links
Each record needs its own unique URL. Filla generates these through an Airtable formula field. Add a formula field called "Edit Link" to your Contacts table and your Deals table. Paste the formula Filla provides:
"https://app.filla.io/forms/your-form-id/" & RECORD_ID()
Replace your-form-id with the form ID from your Filla dashboard. Every row now has its own edit link. This formula field updates automatically as records are added.
For more detail on how this link generation works, see Airtable form update record.
Step 5: Distribute the links
Send edit links wherever makes sense for your workflow:
- Email automations: trigger an Airtable automation when a deal stage changes to send the rep a link to that deal's edit form
- Shared views: include the Edit Link formula field in a filtered view so reps can click into the right form directly from the grid
- Notifications: include the link in any Slack or email notification triggered by a record change
For the Contact update form (external), include the edit link in a quarterly "Please review your contact information" email sent via Airtable automations or your email tool of choice.
Step 6: Test before you send
Open your form using a test record's edit link. Confirm that fields load with current values. Check that read-only fields are locked. Verify that editable fields save correctly on submit. Look at the Airtable record after submission to confirm the row was updated and not duplicated.
Fields to include: Contact update form
This version is designed to be sent to the contact themselves. It should be simple, non-technical, and show them only information relevant to their own record.
| Field | Permission | Why |
|---|---|---|
| Name | Read-only | Confirms they have the right record |
| Read-only | Same as above | |
| Company | Read-only | Context, not editable externally |
| Phone | Editable | Contacts update their own phone number |
| Job Title | Editable | Changes frequently |
| Mailing Address | Editable | Common update request |
| Preferred Contact Method | Editable | Lets them control how you reach them |
| Contact Owner | Hidden | Internal field |
| Tags | Hidden | Internal field |
| Notes | Hidden | Internal field |
Keep this form short. Five to six fields at most. If a contact opens a form with fifteen fields, most of them won't bother.
Fields to include: Deal update form
This version is for internal sales reps. They're updating the pipeline after a call or meeting. They need to be able to move the stage, log notes, and set a next follow-up date.
| Field | Permission | Why |
|---|---|---|
| Deal Name | Read-only | Confirms which deal they're updating |
| Contact | Read-only | Shows who the deal is with |
| Stage | Editable | Core update after every interaction |
| Deal Value | Editable | May change during negotiation |
| Close Date | Editable | Updates as timeline shifts |
| Next Follow-Up | Editable | Scheduled after every call or meeting |
| Notes | Editable | Call notes, action items, objections |
| Loss Reason | Editable (conditional) | See conditional logic section below |
| Owner | Hidden | Set at creation, not on update form |
The "Contact" linked record field displays the contact name in read-only mode. The rep can see who the deal is with but can't reassign it from this form.
For guidance on how linked record fields behave on forms, see linked records in Airtable forms.
Using conditional logic on the deal update form
The deal update form is a good candidate for conditional logic. The most common use case: show the Loss Reason field only when the Stage is set to "Closed Lost."
A rep moving a deal to "Closed Won" doesn't need to see a loss reason field. A rep marking a deal as "Closed Lost" should be required to fill one in. Without conditional logic, you either show the field to everyone (confusing) or leave it off entirely (and lose the data you need for pipeline analysis).
To set this up in Filla, add a condition to the Loss Reason field: show when Stage equals "Closed Lost." The field stays hidden until the rep selects that stage, then appears automatically.
Other conditional logic worth adding:
- Show a "Deal Won Date" date field only when Stage is "Closed Won"
- Show a "Competitor" field only when Loss Reason includes "Lost to competitor"
- Show a "Discount Applied" field only when Stage is "Negotiation" or later
For a full breakdown of how to configure these rules, see Airtable conditional logic forms.
What happens after submission
Airtable automations triggered by form updates
Filla writes changes back to the original record. That means any Airtable automation that watches for record updates will fire normally. Useful triggers to set up:
Stage change notification: when Stage changes, send a Slack or email notification to the rep's manager. Include the deal name, new stage, and a link to the record.
Follow-up reminder: when Next Follow-Up is set or updated, create a task or calendar event. If you use Airtable automations with a date-based trigger, you can send the rep a reminder the morning of the follow-up.
Closed deal workflow: when Stage changes to "Closed Won," trigger a handoff automation: notify the account management team, update a revenue rollup field, and send a confirmation email to the contact.
Contact info update notification: when the Contact update form is submitted, send the Contact Owner a notification that their contact updated their information, so they can review the changes.
Audit fields
The "Last Updated" (Last Modified Time) field updates automatically when Filla writes the changes back. Set the "Update Source" field to auto-populate with "Form" on submission. This lets you filter the grid later to see every record that was last modified through a form, as opposed to manual edits in the base.
If you want a more detailed audit trail, add a Long Text field called "Update History" and use an automation to append a timestamped note every time the form is submitted. This doesn't replace Airtable's revision history, but it gives you a readable log inside the record itself.
FAQ
Can I use one form for both contacts and deals?
Technically yes, but you'll fight it the whole way. Contact forms are external facing. Deal forms are internal. The fields, permissions, and automations have almost no overlap. Two short forms are easier to build and maintain than one overloaded one.
What if the rep needs to update multiple deals at once?
Each deal record has its own edit link. You can include all of a rep's deal edit links in a single email or Slack message. There's no way to update multiple records in a single form submission, but you can open each link in a tab and submit one after another.
Do contacts need an Airtable account to use the contact update form?
No. Filla forms are public URLs. Contacts open them in any browser without an account. Only your internal team needs Airtable access.
How do I prevent reps from changing fields they shouldn't?
Set those fields to read-only in Filla. A field set to read-only appears on the form for context but cannot be edited. Fields you don't want shown at all should be set to hidden. This is different from Airtable's built-in permissions, which apply at the base level. Filla's field permissions apply at the form level.
Can I use this with an existing CRM base that's already set up differently?
Yes. The schema in this template is a starting point, not a requirement. If your Contacts table has different field names or additional fields, Filla reads your actual schema and lets you configure the form against your real fields. The key changes to make are adding the Edit Link formula field and the Update Source text field to each table you want to build update forms for.
Build your CRM update form
Stop creating duplicate records every time a rep needs to update a deal stage. Stop giving base access to people who just need to change a phone number.
Connect your Airtable base to Filla, create a form in update mode, set field permissions, and paste the edit link formula. Twenty minutes to set up. One less thing to manage after that.
Build your first CRM update form free →