Digital Marketing Portfolio

Vũ Tú Oanh (Julia Vu)

Senior Digital Marketing Specialist · Paid Media Lead

I run paid media that has to justify every đồng it spends. From a ₫3M test to a ₫500M/month always-on account, the discipline is the same: name the result, buy it cheaper each month, and prove it in the numbers.

₫5B+Meta Ads spend managed across client accounts
₫2B+Google Ads spend managed across client accounts
10 yrsIn digital marketing, across paid and brand

01 · Range

Budget is not the variable. Discipline is.

The most common objection to a paid-media hire is that they only know one size of account. I have run both ends of the range on the same playbook. Drag the gauge to see what changes and what does not.

Monthly budget at this point
₫3M
Booked range, monthly · Meta Ads
₫3M smallest  →  ₫500M largest
₫3M₫50M₫150M₫500M
Test zone

02 · Method

The rhythm behind every account here

Account size changes the numbers, not the process. This is the same operating model whether the budget is ₫3M or ₫500M.

01

Intake before spend

Offer, margin, capacity and the real definition of a lead are locked before a single đồng goes out. Conversion tracking and conversion actions are verified first, because an untracked account cannot be optimised.

02

Structure by intent, not by audience list

One campaign per objective, and ad sets split by real demand: district by district for a clinic, local versus overseas Vietnamese for a dental brand, messaging versus reach for a spa. The account structure mirrors how customers actually behave.

03

Creative is the main lever

Three to ten variants per ad set at launch, killed on cost per result at day three to five. Most cost-per-result gaps between two accounts in the same category are creative gaps, not targeting gaps.

04

Weekly optimisation, monthly reporting

Budget moves toward the winning ad set instead of a full-account restart. Every month closes with a one-page report: spend, result, cost per result, what changed, what happens next.

05

Scale only what is already proven

A campaign is scaled after cost per result holds for two consecutive weeks. That single rule is why the same operator can run a ₫3M test and a ₫500M month without either one becoming a loss.

03 · Work

Five documented accounts, and two I cannot put a number on

Every figure below is reproduced from the client's own ad account: the Meta Ads Manager report or the Google Ads export shown next to it, and every account carries the brand page so you can see the channel itself. The last block is the exception, and it says so on the page: two large accounts I ran where I no longer hold the export.

Case 01 · Meta Ads

Thốt Nốt & Hạt Đác Rim Cô Ba

MessagingSpecialty foodBrand awarenessMar 2025 – Oct 2026
The problem

A Mekong specialty producer selling a product most buyers have never heard of. Demand exists, but nobody types the product name into a search bar, so the account had to create the conversation rather than harvest it.

What I did

Split the account into two jobs: conversion campaigns that drove messaging conversations from people already curious, and low-CPM engagement campaigns that bought cheap reach to make the product familiar. Creative rotated around product close-ups, origin story and the texture shot that performs best for food.

₫36.2MTotal spend
453,927Accounts reached
760,781Impressions
₫47,536Average CPM
Meta Ads Manager campaign report for Thốt Nốt and Hạt Đác Rim Cô Ba Click to enlarge
Meta Ads Manager · account “Thốt Nốt & Hạt Đác Rim Cô Ba” · 11 campaigns
Result recorded in the ad accountFigure
Messaging conversations started4,349
Best cost per messaging conversation₫5,376
Post engagements301,983
Best cost per post engagement₫14
Average CPC / CTR₫3,691 · 3.54%

Case 02 · Meta Ads

Nàng Gạo Spa & Skincare

MessagingVideo-firstBeauty & skincareOngoing since Sep 2025
The problem

A saturated local category where every competitor buys the same audiences. The account needed a creative-led wedge, and a messaging funnel cheap enough to survive rising competition on CPM.

What I did

Built a messaging track for treatment enquiries alongside an Engage Post track for content reach, then moved to video-first creative because static posts had stopped clearing the CTR bar. Every campaign is named by month, which kept a year of iterations auditable.

₫86.0MTotal spend
1,512,320Impressions
641,243Accounts reached
41Campaigns run
Meta Ads Manager campaign report for Nàng Gạo Spa Click to enlarge
Meta Ads Manager · account “Nàng Gạo Spa” · 41 campaigns sorted by spend
Result recorded in the ad accountFigure
Best cost per messaging conversation₫26,553
Cost per conversation, full range across the account₫26,553 – ₫72,557
Post engagements, best campaign129,679 at ₫27 each
Average CTR / CPC0.82% · ₫6,969
Creative & organic reach

A single Reel drew 64,572 views from 58,121 viewers with 660 engagement. Audience retention shows the drop clustering at the seven-second mark, which is exactly where the next edit cuts.

Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative Nàng Gạo Spa ad creative

Case 03 · Meta Ads

O9 Design Studio

EngagementHigh-ticketLuxury interiorsApr 2025 – Oct 2026
The problem

A high-ticket interior studio with a very long sales cycle. Lead volume is the wrong unit of measurement on a multi-billion-đồng design fee, so the objective was familiarity and portfolio reach long before the enquiry ever happens.

What I did

Ran the account as a portfolio distribution engine. Each campaign promoted a finished project, optimised for engagement and aimed at the design-interested audience. Because the creatives were genuinely good project photography, engagement cost collapsed, which is what makes this the cheapest reach in the portfolio.

₫8,704CPM · cheapest here
2,690,977Impressions
6.95%Average CTR
100,000+Post engagements
Meta Ads Manager campaign report for O9 Design Studio Click to enlarge
Meta Ads Manager · account “Công ty TNHH O9” · 24 campaigns · ₫23.4M total spend
Result recorded in the ad accountFigure
Total spend₫23,421,891
Best cost per post engagement₫86
Top campaign by engagement36,227 at ₫110 each
Accounts reached751,321
Creative

Project-promotion posts run as paid campaigns, with multi-image carousels of finished interiors outperforming single images on both CTR and engagement cost.

O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative O9 Design Studio ad creative

Case 04 · Meta Ads

Homestay Michi Cottage

MessagingSeasonalHospitality · Đà LạtMay – Oct 2026
The problem

A small independent homestay with almost no brand search, competing against hundreds of Đà Lạt listings where bookings arrive by message and demand is brutally seasonal.

What I did

A deliberately two-mode account: messaging campaigns for room enquiries and dates, plus engagement and ThruPlay campaigns at very low cost to keep the property in front of the Đà Lạt travel audience between booking peaks. Offer-led creative with the address and location advantage written straight into the post.

138Messaging conversations
₫8.5MTotal spend · smallest here
87,300Impressions
₫87Cost per ThruPlay
Meta Ads Manager campaign report for Michi Cottage Click to enlarge
Meta Ads Manager · account “Michi Cottage” · 8 campaigns · May 28 – Oct 11, 2026
Result recorded in the ad accountFigure
Best cost per messaging conversation₫36,212
Post engagements, best campaign1,019 at ₫297 each
Accounts reached54,935
Average CTR / CPC / CPM4.38% · ₫10,557 · ₫97,831
Why this case is in the portfolio. It is the smallest budget here at ₫8.5M total, and it still produced 138 messaging conversations. The same account that can hold a ₫500M month is built to work at small scale, which is the point of the range.
Michi Cottage ad creative Michi Cottage ad creative

Case 05 · Google Ads

Nha khoa Nhân Tâm

SearchPerformance MaxDemand GenMulti-location dentalMar – Sep 2026
The problem

A dental brand whose treatments span low-ticket and high-ticket, sold across two districts plus an overseas-Vietnamese segment. A ₫680,000 implant conversion and a ₫14,961 map action cannot share one budget line, so every treatment-to-location combination needed its own economics.

What I did

Built the account by treatment, location and intent, then layered brand-defence and competitor campaigns on top. Added a domestic map and Performance Max layer for walk-in treatments, a separate overseas-Vietnamese track for Australia and Canada, and a Demand Gen campaign to reach people before they search.

₫515.2MTotal spend
23,386Clicks
568,592Impressions · 4.11% CTR
₫22,031Average CPC
Google Ads spend by campaign for Nha khoa Nhân Tâm Click to enlarge
Spend by campaign, rebuilt from the client's own Google Ads export · 24 campaigns with delivery out of 37
Result recorded in the exportFigure
Best CTR · brand campaign19.42%
Best CTR · branding, absolute top impression17.79%
Highest top-of-page impression share94.74%
Overseas-Vietnamese segment (Australia, Canada)2 campaigns · CTR 12.5–13.6%
Reading the conversion column honestly. The export records 3,014 conversions for the period, but 2,761 of those belong to the two map and Performance Max campaigns at a 33–39% rate. Those are local map actions, not form or call leads. Web and call conversions on the treatment campaigns account for roughly 253, and I quote the export as it stands rather than folding both into one flattering number.

Also on my record · no export to publish

Two large accounts I cannot put a number on

Meta AdsGoogle AdsInterior platformDental clinic
Why there are no figures here

Space T and Nha khoa Flora are two of the largest accounts I have worked on, and I ran Meta Ads and Google Ads on both. I have no report I can publish for either one — I no longer hold access to those ad accounts. So I am not going to rebuild a spend figure from memory or dress an estimate up as a report. What I can stand behind is the channel I ran and the page you can open yourself.

2Channels run on each: Meta Ads and Google Ads
0Publishable exports from these accounts
0Figures I am willing to guess at
2Live pages open to check

Interior platform · long-running account

Space T

A Vietnamese interior platform that connects contractors with customers, and the brand behind the strongest organic build in my record. On the paid side I ran both channels on the account: Meta Ads and Google Ads.

Facebook · spacetvn

Dental clinic · Ho Chi Minh City

Nha khoa Flora

A dental clinic in the same medical category as Nha khoa Nhân Tâm above, managed as its own account. Both channels ran here too: Meta Ads and Google Ads. A clinic never behaves like a retail account, and this was one of the accounts that taught me that.

Facebook · Nha khoa Flora
What I am asking you to do with this. Judge these two by the account, not by a screenshot. Both pages are live, both are run by the brands, and both are channels I worked on — open them and you can see what the brand is and how it sells. If you want the numbers behind them, the honest answer is that they sit in ad accounts I can no longer log into, and I would rather tell you that than show you a chart rebuilt from memory. The five cases above are a different situation: those exports are in front of you.

04 · Documented data

What the ad accounts in this portfolio actually hold

Totals across the five accounts shown above, taken from the platform reports. Switch the view to separate the two platforms.

₫669.4MTotal documented spend
5,619,970Impressions
121Campaigns run
1,901,426Accounts reached
How to read the number on the cover. The ₫5B+ Meta and ₫2B+ Google figures are lifetime totals across all client accounts I have managed, including accounts I no longer have reporting access to. The five accounts documented in this portfolio contain ₫154.2M of Meta Ads spend and ₫515.2M of Google Ads spend, all of it verifiable in the screenshots above. I keep the two separate on purpose. Space T and Nha khoa Flora, at the end of the work section, are two of those lifetime accounts: I ran both Meta Ads and Google Ads on each, and the exports are no longer mine to publish.

05 · Beyond the ad account

The work that keeps running without me

Paid media is not only campaign management. The reporting and content cadence has to survive the weeks when the accounts are heavy, so I build the plumbing myself.

A

Reporting on a clock, not on memory

Monthly client reports are assembled from the same source data every time, so a report goes out on the first working day of the month whether or not I have to chase it.

B

Custom AI agents for the repetitive layer

A daily agent reads and summarises industry and platform news, and a second pipeline scans social platforms, drafts posts and schedules them for publishing. The point is not novelty, it is that the content cadence keeps moving in the background.

C

Written SOPs, not tribal knowledge

Naming conventions, launch checklists, kill rules and scaling rules are documented, so a second operator can pick up an account without reverse-engineering it.

Toolkit
AreaTools
Paid mediaMeta Ads Manager, Google Ads (Search, Performance Max, Demand Gen, YouTube), TikTok Ads
Analytics & trackingGoogle Analytics 4, Google Tag Manager, Meta Pixel and Conversions API, Meta Business Suite Insights, Looker Studio
Creative productionCanva, Figma, CapCut, Photoshop. I build the ad creative, not only the brief
WorkflowCustom AI agents for news digests, social listening, content drafting and scheduled publishing

06 · Contact

Tell me the result you need bought

Happy to walk through any account above in detail, including the parts the numbers do not show: what failed first, what was cut, and why.

Name
Vũ Tú Oanh (Julia Vu)
Phone
0986 812 327
Based in
Thanh My Tay Ward, Ho Chi Minh City, Vietnam
Working in
Vietnamese and English · remote or Ho Chi Minh City