It is Monday morning. Priya opens Mediaocean Prisma, navigates to the billing module, and exports the week's delivery actuals for all active campaigns. The file is called Prisma_Export_20260601.csv. It has 47 columns. Twenty-three of them map to fields in NetSuite. The other 24 are Mediaocean-internal fields that mean nothing to your ERP.
She opens the column mapping spreadsheet — Mediaocean_NS_Mapping_v8.xlsx, last updated by the previous finance analyst seven months ago — and begins working through the translation: Mediaocean Campaign ID to NetSuite Project Code, Mediaocean Vendor ID to NetSuite Vendor, Mediaocean Flight Date to NetSuite Posting Period.
This takes 90 minutes. She does it every week. Fifty weeks a year.
The Mediaocean-to-NetSuite gap is not a quirk of her agency's setup. It is the standard operating condition at every independent media agency running Prisma. The two systems were not built to integrate. There is no native connector. There is no live data sync. There is a CSV export and a person who knows how to map it.
What Mediaocean Prisma Actually Does
Mediaocean Prisma is the industry-standard platform for managing digital media buys. An agency running Meta, Google, TikTok, DV360, and The Trade Desk for 15 clients is managing hundreds of insertion orders simultaneously — each with its own flight dates, targeting parameters, unit rates, and delivery commitments. Prisma holds all of it.
More importantly for finance: Prisma receives daily delivery actuals from every major digital platform via API. When Meta reports 2.3M impressions delivered against Brand A's August flight, that number lands in Prisma automatically. When Google confirms $14,800 in search spend against Brand B's Q3 IO, it is in Prisma by the next morning. The platform processes over $200 billion in annualized ad spend and is the authoritative source of truth for what campaigns delivered and what vendors are owed.
This is the data finance needs to accrue media spend, reconcile vendor invoices, and close the books. It lives in Mediaocean Prisma. NetSuite — where the journal entries actually get posted, where the client P&L lives, where the controller runs the close — has none of it natively.
The Gap: Prisma and NetSuite Don't Talk in Real Time
NetSuite is a general-purpose ERP. It does not have a pre-built integration with Mediaocean Prisma. It was not designed for media agency billing workflows. It does not understand campaign objects, IO line items, or the concept of a "flight" in the context of an ad buy.
Mediaocean Prisma is a media management platform. It does not post journal entries. It does not maintain a general ledger. It does not know what your agency's GL account structure looks like or how you want to allocate spend across client P&Ls.
The two systems are built for entirely different purposes by entirely different companies, and they have no shared data model. Getting information from one to the other requires a human to translate it — or a custom integration built specifically for your agency's GL structure, chart of accounts, and naming conventions.
Most independent media agencies in the 50–200 FTE range do not have a custom integration. They have a spreadsheet and a process.
The Manual Bridge: Weekly CSV Export and Column Mapping
The standard workflow at agencies without a custom integration looks like this:
campaign_id → NetSuite's Project; Mediaocean's vendor_code → NetSuite's Vendor; Mediaocean's io_flight_amount → NetSuite's Amount. Some agencies have this as a formal cross-reference table. Others have it as institutional knowledge held by one person.
At a 100-person agency running 15–20 active clients with digital campaigns, this process touches 300–500 data rows per week. The 90-minute estimate above assumes no errors. Weeks where naming conventions break, project codes don't match, or a vendor was added in Prisma but not set up in NetSuite take longer.
What Breaks When the Mapping Isn't Perfect
Two failure modes appear repeatedly and both create real problems at month-end.
Naming convention drift. This is the most common problem. Mediaocean campaign names are set by media planners. NetSuite project codes are set by finance. When a new campaign launches, the media planner creates it in Prisma as FW25-Launch-Meta. Finance creates the corresponding project in NetSuite as FW25 Launch Digital. The VLOOKUP on the weekly mapping fails because the campaign name doesn't match exactly. The spend for that campaign does not get imported. It does not appear in the client P&L that week. Nobody notices until the account manager asks why Meta spend looks low.
Missing NetSuite project codes. When a new IO is created in Mediaocean and no corresponding NetSuite project code exists yet — because finance hasn't set it up, or because the IO was created by a media buyer without looping in finance — the mapping fails for every row associated with that IO. The spend floats. At month-end, when Priya is building the accrual file, she finds line items in Prisma that have no home in NetSuite. She creates a manual journal entry to catch them. This is the right solution. It is also an entirely avoidable extra step.
Neither of these is a catastrophic failure. Both are chronic, low-grade friction that adds 20–45 minutes to every weekly cycle and 2–4 hours to every month-end close.
Free download: Mediaocean-to-NetSuite Column Mapping Template
The exact column mapping table your team needs — Mediaocean Prisma export fields mapped to their NetSuite equivalents, with a Campaign ID join-key tab, naming convention rules, and a reconciliation check formula. Download and use it today.
Download free — join the waitlist to get it →The Join-Key Problem: Mediaocean Campaign ID in NetSuite
The root cause of most naming convention failures is that Mediaocean and NetSuite use different identifiers for the same campaign. Mediaocean assigns a numeric Campaign ID — an internal system identifier that never changes, regardless of what the campaign gets named or renamed. NetSuite uses a Project Code — a human-defined alphanumeric string that finance sets up manually.
The right solution is to use the Mediaocean Campaign ID as a custom field in NetSuite — stamped on every project record at creation. When Priya runs the weekly mapping, the join key is the Campaign ID: a stable, unique, system-generated identifier that does not drift with naming conventions.
Most agencies that have been running both systems for a few years have added this custom field after experiencing enough mapping failures to justify the setup work. But even with the custom field in place, it only works if every new project created in NetSuite gets the Mediaocean Campaign ID populated at setup. When someone creates a NetSuite project without the Campaign ID — because it was a rush setup or they did not know the field existed — the join fails for that campaign and the problem recurs.
The operational fix is a mandatory field. Make the Mediaocean Campaign ID a required field on the NetSuite project form so it cannot be left blank. This requires a NetSuite admin to configure the form. It takes about 20 minutes. It prevents most naming convention failures permanently.
The agencies that have done this describe it as one of the highest-leverage configuration changes they have made in NetSuite — a 20-minute fix that eliminates hours of monthly reconciliation work.
What the Mapping Spreadsheet Actually Looks Like
For agencies that want to standardize this process, the mapping file typically has three tabs:
- ColumnMap tab: Two-column table — Mediaocean field name on the left, corresponding NetSuite field name on the right. This is the translation reference. It covers all 23 fields that transfer between systems and includes a notes column for fields that require transformation (e.g., Mediaocean stores dates as
YYYYMMDD; NetSuite expectsMM/DD/YYYY). - CampaignID tab: Cross-reference table mapping every active Mediaocean Campaign ID to its corresponding NetSuite Project Code. Updated when new campaigns launch. This is the join key table. If this tab is current and complete, the weekly mapping is a VLOOKUP. If it is not, it is manual triage.
- NamingConventions tab: The agreed-upon naming rules for both systems. Format for digital campaigns:
[Client Abbreviation]-[Year]-[Quarter]-[Channel]. Example:BrandA-26-Q3-Metain Mediaocean;BrandA-26-Q3-DIGin NetSuite. The tab documents the translation rules so any new hire can follow them.
The mapping spreadsheet is not a glamorous piece of finance infrastructure. It is also the difference between a weekly process that takes 90 minutes and one that takes 30.
Does Anyone Have a Live Integration?
Some larger agency networks — holdcos and their subsidiaries — have built custom Mediaocean-to-NetSuite integrations through their internal tech teams or via third-party middleware like Boomi or MuleSoft. These integrations sync campaign data on a scheduled basis (typically daily) and handle the field mapping, naming convention enforcement, and project code matching automatically.
These integrations exist. They are not standard. They typically cost $50,000–$150,000 to build and maintain, require dedicated engineering resources, and need to be rebuilt every time either system's API or data model changes. For an independent 80-person media agency, that is not a realistic option.
Mediaocean has a partner ecosystem and some agencies use iPaaS tools to build lighter-weight syncs, but there is no out-of-the-box solution that handles the full translation — campaign objects, GL coding, period mapping, client P&L allocation — for an independent agency's specific NetSuite setup without significant configuration work.
For the independent agencies that make up most of Mediaocean's customer base, the CSV export and mapping spreadsheet is the integration.
What Stamp is building for this
The gap between Mediaocean Prisma and NetSuite is the specific integration Stamp is building — no CSV exports, no column mapping spreadsheet, no naming convention errors. Campaign data flows from Prisma into NetSuite automatically, with the GL coding, project code matching, and period allocation your agency's setup requires. If Priya's Monday morning is still a 90-minute mapping ritual, we'd like to hear what it looks like at your agency.
Join the Stamp beta waitlist →Frequently Asked Questions
Does Mediaocean integrate with NetSuite?
There is no native, out-of-the-box integration between Mediaocean Prisma and NetSuite. Data transfer between the two systems requires either a manual CSV export-and-import process, a custom integration built on iPaaS middleware (Boomi, MuleSoft), or a purpose-built connector. Most independent media agencies (50–200 FTE) use the manual CSV process, typically run weekly by a finance analyst. Custom integrations exist at larger agency networks but require significant engineering investment to build and maintain.
How do media agencies export data from Mediaocean Prisma?
Mediaocean Prisma's billing module allows finance teams to export campaign delivery actuals, IO billing data, and vendor billing records as CSV files. Exports can be filtered by date range, client, or campaign. The exported CSV contains Mediaocean-internal field names and identifiers that do not directly match NetSuite field names — a column mapping step is required before the data can be imported into NetSuite.
What is the Mediaocean Campaign ID and how is it used in NetSuite?
The Mediaocean Campaign ID is a system-generated numeric identifier assigned to every campaign in Mediaocean Prisma. Unlike campaign names, it never changes. The best practice for Mediaocean-to-NetSuite reconciliation is to store the Mediaocean Campaign ID as a custom field on the NetSuite Project record — creating a stable join key between the two systems that does not break when campaign names change or naming conventions drift. Configuring this custom field takes approximately 20 minutes in NetSuite and eliminates most naming convention mapping failures.
How long does Mediaocean invoice reconciliation take?
At a typical independent media agency running 15–20 active clients, the weekly Mediaocean-to-NetSuite mapping process takes 60–90 minutes for a finance analyst who has a current and accurate column mapping spreadsheet. Weeks with naming convention failures, missing NetSuite project codes, or new vendors added in Prisma without NetSuite setup take longer — typically 2–3 hours. At month-end, a full reconciliation between Prisma actuals and NetSuite-posted amounts adds another 2–4 hours to the close process.
Why does media campaign spend sometimes disappear from the client P&L in NetSuite?
Campaign spend disappears from the NetSuite client P&L most commonly because of a naming convention mismatch between Mediaocean Prisma and NetSuite — the campaign name in Prisma does not exactly match the project code in NetSuite, so the VLOOKUP in the mapping spreadsheet fails and the spend is not imported. The fix is using the Mediaocean Campaign ID (rather than campaign name) as the join key, stored as a required custom field on the NetSuite project record.