Automate Client Provisioning with Airtable
Transform your Airtable client directory into an automated SaaS provisioning engine. Trigger account creation directly from record changes (e.g., when Status changes to "Deploy Hardware"), automatically queue complimentary NFC countertop stands, and write the live review funnel URL back into your database.
Airtable Automation Pipeline
How record changes in your Airtable base instantly deploy review funnels:
Status dropdown changes to "Deploy Hardware".
Airtable fires POST request with client shipping fields.
Deploys funnel & queues physical stand dispatch.
Saves returned funnelUrl & orgId into the record.
Prerequisites
aev_live_...) from your API & Webhooks dashboard.Prepare Your Airtable Table Fields
Ensure your Airtable table (e.g. "Clients") contains the following fields:
Set Up Airtable Automation Trigger
In Airtable, click Automations → Create automation:
- Choose trigger: "When a record matches conditions".
- Select your Clients table.
- Add condition:
Status is "Deploy Hardware"andFunnel URL is empty(to prevent duplicate firing).
Configure "Send HTTP Request" Action
Add action "Send HTTP request":
Map the JSON Request Body
In the Body field, map the dynamic record tokens from your trigger step:
{
"name": "{Business Name}",
"adminEmail": "{Owner Email}",
"shippingName": "{Business Name} (Attn: Front Desk)",
"shippingAddress": "{Street Address}",
"shippingCity": "{City}",
"shippingState": "{State}",
"shippingZip": "{ZIP Code}"
}| JSON Key | Required | Airtable Field Token |
|---|---|---|
| name | Yes | {Business Name} |
| adminEmail | Yes | {Owner Email} |
| shippingName | Yes | {Business Name} (Attn: Front Desk) |
| shippingAddress | Yes | {Street Address} |
| shippingCity | Yes | {City} |
| shippingState | Yes | {State} |
| shippingZip | Yes | {ZIP Code} |
Alternative: Airtable "Run a Script" Action
JavaScriptIf your Airtable plan supports scripting or you prefer fine-grained programmatic error handling, you can use a "Run script" action:
const table = base.getTable("Clients");
const record = await input.config();
const response = await fetch("https://aevloc.com/api/v1/agency/subaccounts", {
method: "POST",
headers: {
"Authorization": "Bearer aev_live_your_actual_key",
"Content-Type": "application/json"
},
body: JSON.stringify({
name: record.businessName,
adminEmail: record.ownerEmail,
shippingName: record.businessName + " (Attn: Front Desk)",
shippingAddress: record.streetAddress,
shippingCity: record.city,
shippingState: record.state,
shippingZip: record.zipCode
})
});
const result = await response.json();
if (result.success) {
await table.updateRecordAsync(record.recordId, {
"Funnel URL": result.data.funnelUrl,
"Aevloc Org ID": result.data.organizationId,
"Status": "Hardware Queued"
});
}Add "Update Record" Downstream Action
Click (+) Add action and choose Update record:
- Record ID: Map the
Airtable record IDfrom the trigger step. - Funnel URL: Map
{2. body.data.funnelUrl}from the HTTP response. - Status: Update dropdown value to
"Active Funnel / Queued".
Your Airtable record now stores the live funnel URL, while Aevloc automatically queues the $0.00 complimentary countertop NFC stand for dispatch.
Airtable Troubleshooting & Tips
If an address field in your Airtable record is empty when the status changes, the API rejects the request with 422 Unprocessable Entity. Ensure trigger conditions require Street Address, City, State, and ZIP to not be empty before firing.
Verify your API key in the Authorization header is prefixed with Bearer and is active in /admin/api.