WordPress · B2B packaging
Max-Pak
A B2B site for a packaging film distributor, on a custom theme and an in-house plugin
Max-Pak from Kielce has distributed packaging films, laminates, tapes and paper packaging since 2003. The new site runs on a custom WordPress theme with custom post types and ACF, and an in-house plugin handles quote requests, cookie consent and analytics. No page builder, no jQuery.
- Role
- WordPress developer: theme, content model, backend plugin and content migration
- Period
- Aug - Oct 2026
- Stack
- WordPress
- PHP
- Custom theme
- ACF
- Custom post types
- Custom plugin
- Vanilla JS
- Consent Mode v2
- GTM
- GA4
- Rank Math
- LiteSpeed
- Live site
- max-pak.pl(opens in a new tab)


- pages moved into structured content types
- 27
- product and industry pages edited through ACF fields
- 12 + 12
- film calculators linked to the quote form
- 3
- 301 redirects from the old addresses
- 28
Context
Max-Pak sells to manufacturers, so the site has one job: turn a visit into a quote request. There is no shop and no prices.
The old site repeated the same layout page by page. The 14 industry pages were 72-90% identical, so every change had to be made many times over.
What I did
- A classic PHP theme without a build step: CSS on custom properties and vanilla JS for a keyboard-friendly mega menu, a mobile menu with a focus trap, header search and reduced-motion support
- Two custom post types, offer and industry, and 6 ACF field groups defined in code, so the editor fills in data instead of building layouts
- Migration scripts that moved 27 pages into the new content types and checked that no text was lost
- Max-Pak Backend plugin: a 9-field quote form and a call-back form, validated on the server, with a honeypot, a time trap and a rate limit
- A leads screen in the WordPress admin with statuses and CSV export
- Cookie banner with Google Consent Mode v2 and a consent log that stores IP addresses only as salted hashes
- GTM and GA4 with a generate_lead conversion on the thank-you page
- 3 film calculators (shrink sleeve width, roll length from roll weight, stretch film per pallet) whose result can be attached to the quote request
- JSON-LD for products, breadcrumbs, FAQs and the business, 28 redirects from old addresses, WebP images, a preloaded LCP image and self-hosted fonts
Hard parts and how I solved them
Problem
14 industry pages were 72-90% the same, so one change meant editing every page by hand.
Solution
An industry post type with ACF fields and a single template. Migration scripts moved the content over and checked it word for word.
Problem
If the mail server failed, a quote request sent from the form would be lost.
Solution
Every lead is saved to its own database table before the email goes out, and the team can see and export leads in the admin.
Problem
Analytics had to wait for consent without losing conversions from people who agreed.
Solution
Consent Mode v2 defaults to denied and is updated from the cookie before GTM loads. The plugin is the only place that adds the GTM container.
Results
- 12 product pages and 12 industry pages managed in ACF fields instead of copied layouts
- Quote requests are kept even when email delivery fails
- Conversions tracked in line with each visitor's consent
- Offers and industries included in the sitemap, with structured data on product pages
Screens
Swipe or use the buttons to browse the screens.
Want this kind of work on your team?
I'm happy to walk you through any of these projects in more detail.
Get in touch




