A red wax seal on a cream envelope
Patrician.ch for Firms · Integrations

What an inquiry looks like when it arrives.

A visitor runs a widget or Patrician AI on your site and sends you their numbers. Here is everything that reaches your firm, and how to put it in your CRM.

In short

  • Every inquiry lands in your Inquiry inbox and your email within seconds, with a 1-page brief on the visitor's own numbers.
  • Your booking link opens for the visitor the moment they send.
  • A webhook posts each inquiry as JSON to the address you choose: Zapier, Make, or your own server.
  • The Zapier and Make recipes below create a contact in HubSpot, Pipedrive or Salesforce.
  • The inbox exports to CSV at any time.

Start free Open your Inquiry inbox

1 · The email

An email with the brief in it.

The email goes to your inquiry address, or to the account owner when none is set. Its subject reads "New inquiry: Client A, Dubai leads on their numbers". It lists the visitor's name, email, phone, the widget and the site, the places that led for them and what they set, then their note.

"Open the brief" opens the inquiry as 1 page under your firm's name, ready to read before the first call: what they set, their note, the leading 3 on those settings with the income tax line and the way in on their passports, and the exit rule of the place they live. It prints or saves as a PDF. Pressing Reply answers the visitor, since the email's reply address is theirs.

2 · The booking link

The call is booked while the interest is fresh.

Set a booking link in the Inquiry inbox, under "Where inquiries go": Calendly, Cal.com, HubSpot meetings or your own page. The moment a visitor sends their numbers, the widget thanks them and shows "Pick a time for a call" with your link. Without a link, they are told to expect your reply by email.

3 · The webhook

Every inquiry as JSON, field by field.

Paste an https address into "Webhook for your CRM" in the Inquiry inbox and save. Each inquiry is then posted to it as 1 JSON object, with the header content-type: application/json and a user agent that begins PatricianLeads/1, the moment it arrives. This is a sample from the engine widget. The leading 3 are what the engine ranks first for its settings today.

{
  "event": "lead.created",
  "id": "3f6c1a2e-8b4d-4c0e-9a71-5d2e8f0b6c19",
  "created_at": "2026-10-17T09:14:03.512Z",
  "firm": "Example Advisory",
  "widget": "engine",
  "page_host": "www.example-advisory.com",
  "name": "Client A",
  "email": "client.a@example.com",
  "phone": "+44 20 7946 0000",
  "note": "Planning a move in 2027. Can we talk next week?",
  "leading": [
    "Dubai",
    "Abu Dhabi",
    "Monaco"
  ],
  "facts": {
    "Income": "$1M a year",
    "Exit": "None",
    "Passports": "EU",
    "Lives in": "London",
    "Household": "Solo"
  },
  "dossier_settings": {
    "inc": "1000000",
    "pp": "eu",
    "hh": "solo",
    "home": "3"
  },
  "dashboard": "https://patrician.ch/firms/app/#leads/3f6c1a2e-8b4d-4c0e-9a71-5d2e8f0b6c19"
}
FieldTypeWhat it holds
eventTextlead.created for a real inquiry, lead.test for the test sent from your dashboard.
idTextThe inquiry's own id. The same inquiry never arrives with 2 ids.
created_atTextWhen it arrived, in ISO 8601, UTC.
firmTextYour firm's name, as set in the dashboard.
widgetTextWhere the visitor asked: a widget (engine, globe, board, life, ladder, calculator, exit, routes, passports, fire, schengen, residence) or Patrician AI (associate).
page_hostText or nullThe site the widget sat on, when the visitor's browser shares it.
nameTextThe name the visitor typed.
emailTextThe visitor's email, checked for its form.
phoneText or nullTheir phone, when they gave one.
noteText or nullWhat they wrote to you, up to 1,000 characters.
leadingListThe places that led on their numbers when they sent it, first place first. Empty for a widget that ranks nothing.
factsObjectWhat they set, as label and value pairs, in the words the widget showed them (income, passports, where they live, their household).
dossier_settingsObjectThe same settings in the form the dashboard reads, so 1 click writes their Dossier. Empty for Patrician AI.
dashboardTextThe link that opens the inquiry in your Inquiry inbox.

A test from the dashboard adds "test": true and carries "event": "lead.test". Nothing else is sent: no IP address and no tracking data.

4 · Into your CRM

A contact in your CRM, with no code.

Zapier

  1. Create a Zap. For the trigger choose Webhooks by Zapier, event Catch Hook, and copy the webhook URL Zapier gives you.
  2. In your dashboard, open the Inquiry inbox, paste that URL into "Webhook for your CRM", save, and press "Send a test inquiry to the webhook".
  3. Back in Zapier, test the trigger. The sample arrives with every field above.
  4. Add a Filter step: continue only if event exactly matches lead.created, so tests stay out of your CRM.
  5. Add the action of your CRM. HubSpot: create or update a contact, mapping email, name and phone. Pipedrive: create a person, then a lead titled with name. Salesforce: create a record of the Lead object, with name as Last Name, page_host or your own wording as Company, and email and phone.
  6. Put note, leading and dashboard into a note or description field, so the person who calls has the numbers and the link to the brief. Turn the Zap on.

Make

  1. Create a scenario. Add the Webhooks app, module Custom webhook, add a webhook and copy its address.
  2. Paste the address into "Webhook for your CRM" in your Inquiry inbox, save, and press "Send a test inquiry to the webhook". Make reads the data structure from it.
  3. Add a filter after the webhook: event equal to lead.created.
  4. Add the module of your CRM. HubSpot CRM: create or update a contact. Pipedrive: create a person, then a lead. Salesforce: create a record of the Lead object. Map the fields as in the Zapier recipe.
  5. Map note, leading and dashboard into a note field, then switch the scenario on.

Your own server takes the same POST. Answer with a 2xx status within 6 seconds.

5 · The CSV export

The whole inbox, in 1 file.

"Export CSV" at the top of the Inquiry inbox downloads every inquiry, in UTF-8 that Excel and Google Sheets open directly. The columns:

Received Name Email Phone Widget Site Leading Their numbers Note Status Dossier Private note

"Status" is the stage you set on each inquiry (new, contacted, client, closed) and "Private note" is your own, never shown to the visitor.

Questions

Is a test inquiry sent to the webhook as well?

Yes. "Send a test inquiry to the webhook" in the Inquiry inbox posts a sample with event set to lead.test and test set to true.

Filter on event in your Zap or scenario, so a test never creates a contact in your CRM.

What if our webhook is down when an inquiry arrives?

The inquiry is posted once, within seconds, and waits up to 6 seconds for your answer.

Whatever your webhook answers, the inquiry is already in your Inquiry inbox and in your email, and the inbox exports to CSV. Nothing is lost.

Which addresses can receive the webhook?

An https address that resolves to a public server.

A private or local address is refused, and the address is checked again before every call.

Does a test inquiry count toward our plan's inquiries?

No. An inquiry sent from an email address on your own account is a test and is never counted.

Send one from your widget with your own address to see the email, the brief and the webhook exactly as a client's inquiry reaches you.

Start free Patrician.ch for Firms

Patrician.ch for Firms is self-serve software that produces comparison research. It is not tax, legal or immigration advice. Zapier, Make, HubSpot, Pipedrive and Salesforce are named only as places an inquiry can be sent, and Patrician.ch has no tie to any of them.

Income tax on the published 2026 rules. Social contributions, most deductions and treaties are not modeled. Figures are for a non-US single filer. Wealth tax, an exit and your passports are added when you run the engine on your own numbers. Not advice. Residence rules change often. Verify before acting.

← Back to the board