Dr. Ahmed Hassan Pharmacy is in First Sheikh Zayed, Giza Governorate, open every day from 8:30 AM until 2 AM, and most of its orders come in by phone and WhatsApp and are delivered to the door. We worked with the pharmacy on 3 connected things: a landing page in Arabic and English at ah-pharmacy.com that takes the customer to the order button from the first screen, a private customer portal for the pharmacy team built on its monthly sales reports, and an organised setup for the pharmacy's two WhatsApp numbers on the Marsal platform. This page explains what we did in each part, and why we did it that way.
Overview
The pharmacy does not need an online store with thousands of products, a basket and online payment. What actually happens is that the customer photographs the prescription and sends it on WhatsApp, or calls to ask about a medicine, and the pharmacy replies with what is in stock and the price and sends the order out with the delivery rider. So the question we started from was: what is the shortest route between someone searching Google for "pharmacy in Sheikh Zayed" and a WhatsApp message on the pharmacy's phone?
The answer was one page, not a ten-page website. The page tells the customer whether the pharmacy is open or not, gives them a WhatsApp button that opens a ready-made order message, and below that explains the services, how to order, the address and the hours, and answers the questions that keep coming up. Once orders were arriving, the pharmacy owner had a second question: who are these customers? Who comes every month and who stopped? That is what the internal portal was built for. The third part was organising WhatsApp itself, so that messages do not get lost between a marketing number and an orders number.
Only the first part is public, and it is the one shown in the images above. The portal and the WhatsApp setup are internal working tools that hold real customer data, so we describe them here in words, without any screenshots.
About the client and the sector
Dr. Ahmed Hassan Pharmacy is a neighbourhood pharmacy in First Sheikh Zayed, serving the residents around it and the nearby areas. Its daily work is filling prescriptions, delivering to homes, and answering people's questions about doses, alternatives and how to take a medicine. The hours are long, from 8:30 AM until 2 AM every day of the week, which means a lot of orders come in at times when the customer is unwell and does not want to leave the house.
A customer in Egypt usually picks the pharmacy that is close to them and replies quickly. So the real competition is over two things: that the customer finds you the moment they search, and that they come back to you. That is why all the work was split across those two questions: the page and local SEO so they find you, and the portal and WhatsApp so they come back.
The pharmacy was using a point-of-sale program called SofTech Smart Business, which produces monthly sales reports as Excel files. That data had been there from the start, but nobody read it except at accounting time.
The challenge
The first problem was that people searching for a pharmacy are in a hurry. They will not read about the pharmacy's history or look through photos. They want to know whether it is open right now, what the number is, and whether it delivers to them. Anything that delays those answers loses the order.
The second problem was in Google itself. Searching for a pharmacy is a local search, and Google leans on the business profile in Google Maps and on the name, address and phone number matching everywhere the business is mentioned. If the website writes the address one way and the profile writes it another, that weakens the signal instead of strengthening it.
The third problem was that the pharmacy did not know its customers. There are a lot of invoices every month in the point-of-sale program, but no easy way to see which customer used to come every month and disappeared 3 months ago, whose spending is dropping, or whether a new customer who came once ever came back. And contacting those customers on WhatsApp has rules set by Meta itself: templates have to be approved, there is a daily message limit, and if people block or report the number it can be shut down.
The fourth problem was WhatsApp itself. The pharmacy has an orders number running on the WhatsApp Business app on the pharmacy's phone, and the team is used to replying from it. If we were adding a number for marketing and campaigns, a customer who replies to a campaign message had to be sent to the right number, and the team must not get confused between two numbers.
The solution
The landing page. We built one long page, in Arabic on the main address and in English on /en. The first screen carries the pharmacy's name, an «Open now» sign that is worked out from the opening hours and switches by itself to «Closed now, opens 8:30 AM» outside them, an «Order on WhatsApp» button that opens the chat with an order message already written, a call button, and a card with the phone number, the hours and the address. Below the first screen come 5 sections in order: services, ordering in 3 steps, customer reviews, address and hours, and the FAQ, with a last order button at the end.
The design was made in 3 different directions, and the client picked one we called «navy bold»: a deep navy in the hero and the ordering section, a blue taken from the pharmacy's own logo (#1D398D), and green WhatsApp buttons so the eye goes straight to them. The typeface is IBM Plex Sans Arabic, served from the same server, and it covers Arabic and English in the same style.
The page is built in PHP without a database. All the copy in Arabic and English sits in a single JSON file, so if the pharmacy changes its hours or its number, the edit happens in one place and applies to both versions and to the structured data at once.
Local SEO. The name, address and phone number are written exactly as they appear on the pharmacy's Google profile. The page carries structured data of type Pharmacy, which is a kind of LocalBusiness, with the hours, the coordinates and the phone number, plus FAQPage data for the frequently asked questions. It also has hreflang linking the Arabic version to the English one, and a sitemap. The reviews shown are taken from the Google profile with the reviewer's name and when it was written, together with a link to all the reviews there.
The internal customer portal. A private portal for the pharmacy team, in Arabic and English, built in raw PHP with PDO and MySQL and no framework. The team uploads the monthly sales report from the point-of-sale program, and the portal turns it into a profile for every customer and a snapshot of that month. If the same month is uploaded again after a correction, the new version replaces the old one instead of the figures being counted twice.
From those files the portal places customers in loyalty tiers by their total spend, and the team edits the threshold for each tier itself. There are segments by buying behaviour: customers who stopped coming, customers whose spending dropped, and new customers. There are alert rules, and a new-customer page that groups customers by the first month they bought and shows which of them came back in the months after. All of it exports to Excel, and a summary arrives by email daily and weekly.
WhatsApp campaigns. From inside the portal the team can pick a segment and send it a WhatsApp campaign through the WhatsApp Cloud API on the Marsal platform. The campaign is built first and stays on hold, and no message goes out until someone presses «Start». Before that they can send a test to one number to see the message. They can also pause the campaign and resume it, schedule it, try two templates on half of the segment each, and keep a control group that receives no messages, to find out whether the campaign actually changed sales.
Protection against the number being shut down is built into the campaign itself: messages use Meta-approved templates only, the daily cap follows the number's messaging tier at Meta and adjusts by itself when the tier changes, and there is a sending window and a speed limit. Anyone who sends the Arabic word for "stop" is taken out of campaigns immediately.
WhatsApp automation on Marsal. The marketing number never takes orders. Any message that reaches it gets one reply with a button that sends the customer to the orders WhatsApp. The orders number is connected to Marsal in coexistence mode: the team still replies from the WhatsApp Business app on the phone as they are used to, and every chat is saved in Marsal at the same time. On top of that, Marsal sends a greeting with the customer's name when a chat has been quiet for two hours, an away message outside opening hours, and a Google review request after a conversation ends. The details of the platform itself are on the Marsal page.
Technical specifications
| Item | Details |
|---|---|
| Project type | A pharmacy landing page + an internal customer portal + WhatsApp automation |
| Landing page | PHP without a database, with all content in one JSON file for both languages |
| Languages | Arabic RTL on the main address, English on /en |
| Design | The «navy bold» direction, chosen by the client out of 3, logo blue #1D398D and green WhatsApp buttons |
| Typeface | IBM Plex Sans Arabic served from the same server |
| Local SEO | Name, address and phone matching the Google profile, Pharmacy (a LocalBusiness type) and FAQPage data, hreflang, sitemap |
| Performance and security | CSS inside the page, a map that loads on request, and a strict CSP |
| Customer portal | Raw PHP, PDO and MySQL with no framework, Arabic and English interface |
| Data source | Monthly sales reports from the SofTech Smart Business point-of-sale program, in Excel format |
| Portal access | User roles, a log of every action, and login lock after 5 failed attempts |
| WhatsApp Cloud API through Marsal, Meta-approved templates, and the orders number in coexistence mode |
Key features
- An «Open now» sign worked out from the hours that changes by itself outside opening time.
- A WhatsApp button in the header, the hero, the ordering section and the end of the page, all opening a ready-made order message.
- A complete English version on /en, where the reviews are translated and marked as translated from Arabic.
- The pharmacy's details in one file, so any change to the hours or the number shows up in both versions and the structured data together.
- The Google map only loads when the visitor taps «Show map».
- A profile for every customer from the point-of-sale reports, and uploading the same month again replaces the old one.
- Loyalty tiers with thresholds the team edits, and segments for those who stopped coming, those whose spending dropped, and new customers.
- A new-customer page showing who came back in the months after their first purchase.
- WhatsApp campaigns that only start with a press, with test sends, scheduling, pausing, a two-template test and a control group.
- A daily cap that follows the number's tier at Meta, a sending window, a speed limit, and opting out by sending the Arabic word for "stop".
- A marketing number that redirects to the orders number, and an orders number that runs from the phone and is saved in Marsal.
Delivery stages
- Gathering the facts. We started from the pharmacy's Google profile: the exact name, the address, the phone number, the hours and the coordinates. That became the reference every line on the page goes back to.
- 3 design directions. We presented 3 different looks for the page, and the client chose «navy bold». After that we tuned the colours to the logo blue and kept green for WhatsApp only.
- Building the page in two languages. We wrote the Arabic copy first, then the English version, and put both in one JSON file. Then came the structured data, hreflang and the sitemap.
- Performance. CSS inside the page, the typeface from the same server, the map on request, and a strict CSP. The aim is for the page to open quickly on a phone on a weak connection, because that is the phone a sick customer orders from.
- The customer portal. We studied the format of the point-of-sale reports and built the import that creates a profile for every customer and a snapshot of every month. Then came the tiers, segments, alerts, the new-customer page, export, email summaries and permissions.
- Campaigns. We connected the portal to Marsal and built campaigns so that they start on hold, along with test sending, scheduling, pausing, the two-template test, the control group and the limits.
- WhatsApp. We set up the marketing number's reply and its button, connected the orders number in coexistence mode without the team changing how they work, and then added the greeting, the away message and the review request.
User experience
We thought of the customer as someone who is unwell, or ordering for someone who is, holding the phone in one hand. That is why the WhatsApp button sits everywhere the customer might decide, from the header to the end of the page, and the message that opens is already written, so the customer just sends the photo of the prescription.
The «Order in three steps» section is there for people ordering from a pharmacy on WhatsApp for the first time. The steps are simple: send the prescription, the pharmacy confirms what is available and the price with you, and the order reaches you. Knowing the price before delivery removes the customer's biggest hesitation.
The FAQ was written from the questions the pharmacy hears every day: do you deliver? what are the hours? how do I order with a prescription? where is the pharmacy? Each answer carries the information itself, not a line saying «contact us».
Inside the portal we thought about a pharmacy team with little time to spare. The segments are ready in front of them without filtering invoices by hand, a campaign never moves on its own, and the test send lets them see the message on their own phone before it reaches any customer.
Results and impact
We will not write visit or sales figures here, because that is the pharmacy's data. What we can say is what the pharmacy can now do that it could not do before.
A customer searching for a pharmacy in Sheikh Zayed finds a page that tells them on the first screen whether it is open, and with one button reaches the orders WhatsApp. Google finds the same name, address and phone number on the site and on the business profile, and structured data telling it this is a pharmacy and what its hours are. And a customer who speaks English finds a complete version in their language.
The pharmacy team now knows its customers by name and behaviour, not only by invoices. They upload the month's report and see who stopped coming, whose spending dropped and which new customers came back, send each group a message that suits it, and learn from the control group whether the campaign made a difference. All of this without putting the number at risk of being shut down, because the limits are built into the system itself.
And WhatsApp is now organised: marketing messages do not mix with orders, the team still replies from the phone they are used to, every chat is saved, and a customer who messages the pharmacy late at night after hours knows the message has arrived and will be answered.
Frequently asked questions
Why one page instead of a full website with several pages?
Because the pharmacy's work is phone and WhatsApp orders, and the customer wants to know whether it is open, what the number is and whether it delivers. One page answers all of that without the customer having to move around, and every section has a link in the menu.
How does the «Open now» sign know the hours?
The sign is worked out from the opening hours written in the pharmacy's data file, from 8:30 AM until 2 AM, and outside those hours it changes by itself to «Closed now, opens 8:30 AM». If the hours change, one value in the file is edited.
Can the pharmacy edit the copy or the number itself?
All of the page's copy in Arabic and English, together with the phone number, address and hours, sits in a single JSON file. Any change to it shows up in both versions and in the structured data Google reads, together.
Where does the customer portal get its data from?
From the monthly sales reports produced by the SofTech Smart Business point-of-sale program in Excel format. The team uploads the report, and the portal creates a profile for every customer and a snapshot of the month; if the month is uploaded again it replaces the old version.
What stops the WhatsApp number being shut down because of campaigns?
Campaigns are sent with Meta-approved templates only, the daily cap follows the number's tier at Meta and adjusts by itself, there is a sending window and a speed limit, and anyone who sends the Arabic word for "stop" leaves the campaigns. And a campaign only starts when someone on the team presses «Start».
How does the pharmacy know whether a campaign worked?
In every campaign the team can keep a control group from the same segment that does not receive the message. When the next month's report is uploaded, comparing the two groups shows whether the message changed purchases. There is also a two-template test on the same segment.
Does the team have to leave the WhatsApp Business app and reply from Marsal?
No. The orders number is connected to Marsal in coexistence mode, so the team replies from the WhatsApp Business app on the phone as before, and every chat is saved in Marsal at the same time. Marsal sends the greeting, the away message and the review request by itself.
Why does the marketing number not take orders?
So that orders are not split across two numbers and no order gets lost. Any reply to the marketing number gets one message with a button that sends the customer to the orders WhatsApp, where the team carries on with them.









