ON AIR Get audit
The Growth Brief / Automation
Automation · 2026-08-06 · 12 min read

From Google Sheets to a dashboard: reporting automation for a Dubai SMB

From Google Sheets to a dashboard: reporting automation for a Dubai SMB
A Dubai SMB dashboard costs AED 5,000-8,000 to build, AED 500-1,000/mo to run. Sources, tools, and honest payback math.

# From Google Sheets to a dashboard: reporting automation for a Dubai SMB

A working reporting dashboard for a Dubai service business with two or three data sources costs AED 5,000 to 8,000 to build and AED 500 to 1,000 a month to keep running. The manual version of the same report takes 12 to 16 hours every month. Most of the build cost goes into cleaning and reconciling the sources, not into designing charts, and any quote that skips that part is quoting the easy half of the job.

I run this stack on my own business. SkyLight is a studio rental and production operation in Dubai Investment Park, and our numbers arrive from three places that do not naturally speak to each other: a CRM, WhatsApp conversations, and a payment gateway. Everything below comes from wiring those together and then watching what broke.

Why Dubai SMBs stay stuck in Google Sheets

The sheet is usually the only place in the company where all the numbers meet. The CRM knows about deals, the gateway knows about payments, WhatsApp knows about conversations, and none of them knows what the others know. So somebody opens a tab on the second of the month and starts copying.

Put a rate on that. An operations coordinator in Dubai on AED 6,000 to 9,000 a month works about 176 hours, which is AED 34 to 51 an hour. Fourteen hours of monthly reporting costs AED 480 to 710, or AED 5,700 to 8,600 a year. If an operations manager on AED 15,000 does it instead, the same fourteen hours cost about AED 1,190 a month and AED 14,000 a year.

The bigger cost is timing. A report assembled on the eighth describes a month that ended eight days ago. Every decision inside it is already late. When we were still doing this by hand, I would find out that a campaign had stopped producing about three weeks after it stopped, and by then the spend was gone.

If several of these symptoms sound familiar, the six signs a business has outgrown spreadsheets piece is the diagnostic version of this section.

What changes when you move to a dashboard

A dashboard splits one job into four. Sources hold the raw records. A pipeline moves those records on a schedule. A transformation layer cleans and joins them. Only then does anything get drawn on screen.

A spreadsheet collapses all four into a single file, which is why it holds up fine at ten deals a month and falls apart at two hundred. Google Sheets caps a spreadsheet at 10 million cells, with a 20 million beta rolling out to allowlisted Workspace domains since April 2026, but almost nobody hits that ceiling. What people hit first is the human ceiling: two people editing the same tab, a formula quietly overwritten with a pasted value, and no record of who did it or when.

Sheets does not have to die in the process. It stays useful as a cheap staging layer and as the place where you type things no system can supply. What it stops being is the report.

A template is only as clean as the sheet under it

Every marketplace sells a dashboard template. They assume one clean table with consistent column names, one date format, and one phone number format. Real data in Dubai arrives as +971 50 123 4567, 0501234567, and 971501234567 for the same customer, some rows timestamped in Gulf Standard Time and some in UTC because a webhook wrote them, plus duplicate leads because the same person messaged twice on two numbers. Drop that into a template and it renders beautifully wrong. Deduplication and format normalisation are where the real work sits, and no template does that for you.

Looker Studio, Power BI or Metabase for a Dubai SMB

| Tool | Licence cost | Who needs a licence to view | First dashboard | Skill needed | |---|---|---|---|---| | Looker Studio | Free. Pro is $9 per user per project per month, about AED 33 | Nobody. A shared link is enough | 1 to 2 days | Spreadsheet level | | Power BI Pro | $14 per user per month since April 2025, about AED 51 | Every viewer needs their own licence | 3 to 5 days | Data modelling and DAX | | Metabase | Open source is free to self-host. Cloud Starter is $100 a month plus $6 per user above five | Nobody, if you host it yourself | 3 to 7 days plus server setup | SQL, and someone to run the server |

For most Dubai SMBs the answer is Looker Studio, and the deciding factor is not features. It is who has to hold a licence. When your accountant, your partner, and a landlord all need to see one number, Power BI turns each of them into a $14 line item, while a Looker Studio link costs nothing to open. Power BI earns its money when you have real data volume and someone in-house who models data properly. Metabase is the right call when your data already lives in a database and you have a person comfortable with SQL. Without that person, self-hosting is a second system to maintain, and you now own the uptime.

Connecting the sources you actually have

Guides on this topic love to say "connect your CRM". Here is what the sources look like in a Dubai service business.

WhatsApp. The WhatsApp Business app on a phone has no export API. There is no supported way to pull conversation data out of it, and anyone promising otherwise is scraping. To get data out you need the WhatsApp Business Platform through Meta or through a provider, and then inbound messages arrive at your webhook as structured events. One field is worth the whole exercise: when a customer arrives from a click-to-WhatsApp ad, the first inbound message carries a referral object with source_id, source_url, headline and ctwa_clid. That is the link between ad spend and a chat lead. It appears only on the first message of the conversation, so if your pipeline does not store it immediately, the attribution is gone. This is the same plumbing behind our WhatsApp AI sales agent, and the reporting side of it is why we built it that way.

Payment gateway. Stripe, PayTabs and Telr all fire webhooks on a successful charge, so capturing payments is the easy part. Reconciliation is the hard part. The gateway dashboard shows gross, the bank shows batched payouts net of fees, and the two will never match line for line. Stripe charges 2.9% plus AED 1 on domestic UAE cards, PayTabs reports around 2.85% plus a small fixed fee that moves with your plan and volume, and Telr runs from AED 99 to 349 a month plus roughly 2.49% to 2.69% per transaction. None of these gateways publish one fixed UAE rate card, so confirm the current number with your account manager before you build the deduction into a formula. Build the fee into the transformation layer or your revenue chart will be wrong by about 3% forever.

Manual invoices. This is the source everyone underestimates, because it is a human typing. No pipeline fixes a typo. The only real fix is upstream: replace the free-text cell with a validated entry form, restrict the invoice number format, and make the currency field a dropdown. Fix the input, then automate the report.

CRM. Almost every CRM has an API. The problem is rarely access, it is that the CRM disagrees with the gateway about which deals are paid.

The automation layer: Zapier, Make or Apps Script

| Tool | Free tier | Practical ceiling | Best for | |---|---|---|---| | Zapier | 100 tasks a month, 5 Zaps, two steps each, 15-minute polling | Pro at $29.99 a month gives 750 tasks | Simple A-to-B moves between well-known apps | | Make | 1,000 operations a month, 2 active scenarios, 15-minute minimum interval | Cheaper per operation at volume | Multi-step flows with branching and error handling | | Google Apps Script | Free with a Google account | 6 minutes per execution, 90 minutes of trigger runtime a day on consumer accounts and 6 hours on Workspace, 20,000 URL fetches a day | Sheet-native jobs and anything Zapier prices badly |

Zapier's free tier is a demo. One hundred tasks is three or four runs a day, and a two-step limit means you cannot filter before you write. Make's 1,000 operations go further because a single scenario can do many things, though each module call counts.

Three flows that earn their keep in a service business:

  • Payment webhook lands, the row is written to Sheets with the gateway fee already subtracted, and the matching CRM deal moves to paid. This one flow removes most month-end reconciliation.
  • Every night a script pulls yesterday's ad spend per campaign and writes it next to the leads that carried the matching source_id, so cost per booked job is a column and not a calculation somebody does by hand.
  • First response time per conversation gets logged the moment a reply goes out. Ours runs continuously, which is how I can say that a reply at 03:00 on a Saturday takes the same number of seconds as one on Monday morning.

Apps Script deserves more credit than it gets. It is free, it runs inside the sheet, and the 6-minute execution cap is only a problem if you try to process everything in one pass. Batch it and it holds.

Why reporting automation goes stale after month three

The dashboard says it refreshed an hour ago. It did. The pipeline that fills the sheet died on Tuesday, so the dashboard has been faithfully refreshing three-day-old numbers ever since. Freshness of the chart and freshness of the data are different things, and confusing them is the single most common failure I see.

Looker Studio's Google Sheets connector defaults to a one-hour cache and can be pushed to 15 minutes. That setting controls how often the chart re-reads the sheet. It knows nothing about whether anything wrote to the sheet.

The other breakages, in the order they show up: an OAuth token expires and nobody notices because the failure is silent; someone renames a column from "Amount" to "Amount (AED)" and every formula downstream returns blank; the Google Sheets API returns 429 because you crossed 300 read requests per minute per project or 60 per minute per user, and your scheduled job simply skips a day.

So the build is not finished when the chart looks right. It is finished when a failed run sends a message to a human, when there is a manual fallback for the day the API is down, and when a reconciliation log records what was written and what was skipped. We found two sync bugs between payment confirmation and CRM stage this way, and until the alerting existed, roughly AED 15,000 of paid bookings had been sitting in the CRM marked unpaid for weeks. The dashboard had been green the entire time.

What it costs in AED, and when it actually pays back

| Stage | What runs | Build (AED) | Monthly (AED) | |---|---|---|---| | 0 | Everything typed into Sheets by hand | 0 | 480 to 1,190 in salaried time | | 1 | Make or Zapier writes into Sheets daily, one live summary tab | 2,500 to 4,000 | 40 to 150 in tool fees | | 2 | Looker Studio reads a clean sheet through the API, hourly refresh, alerts on failure | 5,000 to 8,000 | 500 to 1,000 | | 3 | CRM and gateway feed a database directly, Sheets retired | 12,000 and up | 1,200 to 2,500 |

Bands move with the number of sources and how dirty they are. Two clean sources land at the bottom of each range. Five sources with duplicate contacts and three date formats land at the top, or above it.

Now the payback, done honestly. If the person writing your monthly report earns AED 6,000 to 9,000, you are saving AED 480 to 710 a month in labour and paying AED 500 to 1,000 to maintain the automation. On labour alone that is a wash, and I would rather say so than sell you a dashboard. Automation pays back through decisions, not through hours saved. One ad set at AED 150 a day that keeps spending for three weeks after it stops producing burns AED 3,150. Catching two of those a year covers the build. The two-to-three-month payback figure holds when reporting lag is costing you at least AED 2,500 a month in late calls. Below that threshold, stay in Sheets and automate the data entry instead of the chart.

Our own productised version of stage 2 starts at AED 6,000 to set up plus AED 1,200 a month, and the process automation service page carries the full scope, because monitoring, alerting and changes are inside that number rather than billed as surprises.

Build it yourself or bring someone in

Build it yourself if you have one or two sources, both with clean APIs, and somebody internally who enjoys this. A Looker Studio report over a Sheet that Make fills every night is a weekend of work, and doing it yourself teaches you where your data is dirty, which is worth more than the dashboard.

Bring someone in when the sources disagree with each other. Reconciling a gateway against a CRM against a manual invoice log is not a charting problem, and it is where a DIY build stalls after the first month, usually right when the person who built it gets busy with their actual job.

Either way, start by counting sources and listing the exact fields each one can give you. If you would rather have that mapped before anyone quotes a build, our growth audit starts at AED 3,000 and produces the source map and the field list as deliverables you keep regardless of who does the work.

FAQ

Can I automate Google Sheets without hiring a developer? +
Yes, up to a point. Make's free tier gives 1,000 operations a month and Zapier's gives 100 tasks, which is enough to pull data from one or two apps into a sheet on a schedule. The wall you hit is transformation. Deduplicating contacts, normalising +971 and 05 phone formats, and matching a payment to a deal are logic problems, and that is where most non-developers stop.
What does it cost to set up a business dashboard in the UAE? +
AED 5,000 to 8,000 for a two or three source dashboard with automated refresh, plus AED 500 to 1,000 a month to maintain. A single-source report over one clean sheet can be done for AED 2,500 to 4,000. A full database-backed setup with the spreadsheet retired starts around AED 12,000. Software licences are usually the smallest line: Looker Studio is free, Power BI Pro is about AED 51 per user per month.
Why does my automated dashboard show stale data? +
Almost always the pipeline, not the dashboard. Looker Studio refreshes its Sheets connector every hour by default and will happily re-read a sheet nothing has written to since Tuesday. Check in this order: did the last scheduled run complete, did an OAuth token expire, did a source column get renamed, and did you hit the Sheets API limit of 300 read requests per minute per project.
Should I use Google Sheets as my business database? +
As a staging layer and a manual entry point, yes. As the system of record, no. A spreadsheet has no row-level permissions, no audit trail of who changed a formula, and no protection against a paste overwriting a live column. The practical breaking point in a service business is usually two people editing during the same working day.
How do I connect WhatsApp conversations to a dashboard? +
Through the WhatsApp Business Platform, not the phone app. The phone app has no export API. Once messages arrive at a webhook, store the conversation ID, the timestamp of the first inbound and first outbound message, and the referral object from click-to-WhatsApp ads, since ctwa_clid only appears on the first message of a conversation. Response time and lead-to-ad attribution both come out of that one table. The WhatsApp and CRM integration guide covers the connection side in detail.
How long does it take to build a working dashboard? +
One to two weeks for stage 2 with clean sources. Charting takes a day or two. The rest goes into agreeing what each metric means, fixing formats at the source, and then watching the pipeline for a week to see what fails before anyone relies on the numbers.
free check

See these numbers for your own business.

Leave your number — our AI agent calls you back within minutes and books a free 15-minute leak check.

no obligation · 15 minutes · by clicking you agree to our privacy policy
slgo.ai · ai growth ops · dubai · en / ru / ar
Directed by You · Produced by SLGO.AI · Starring Your Revenue
NO AI WAS LEFT UNSUPERVISED IN THE MAKING OF THIS GROWTH.
Audit · AED 3,000WhatsApp