Hard-coded IDs and names the theme depends on
This page is for developers and whoever manages cPanel settings. The altapac.com theme contains fixed numbers and names that have to match records in the Maropost cPanel: warehouse ids, Store Finder ids, customer group ids, page ids, form URLs, advert group names, content zone names and so on. Maropost does not warn you when one of these stops matching. The section that depends on it just goes empty, or shows the wrong store, price or image.
Use it before you delete, re-create, renumber or rename any of the records listed below, and when you add a new store, warehouse or trade tier.
Everything here was checked against Altapac-ReDev branch development on 2026-10-21. In the “Where used” column, paths are relative to Altapac-ReDev/src/templates/, and paths starting with js/ are relative to Altapac-ReDev/src/js/. “Live” means checked read-only on https://www.altapac.com on 2026-10-21. Live can lag development.
How to use this page
- Find the kind of record you are about to change (warehouse, store, page, advert group and so on) in the sections below.
- Find the exact value in the table. If it is listed, the theme depends on it.
- Read “What breaks”. If you still need the change, ask a developer to update every file in “Where used” in the same release as your cPanel change.
- After the change goes live, check the page or section named in “What breaks”. Most of these failures don’t show any error.
- If you are adding something new (a store, a warehouse, a trade group, a promo type), use the checklist at the end.
Warehouses
The product page’s Pick up tab and per-store stock come from a fixed warehouse-to-store table in the theme. The platform’s own warehouse-to-store link isn’t set up on this store, so the theme’s table is the only one.
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
4 | Kotara store stock, warehouse “Park Ave” (store id 1) | products/includes/availability.template.html:270, :342, :416 | Kotara shows no stock in Pick up; kits can’t compute Kotara availability | Seen live on sampled product pages |
9 | Online warehouse, “Altapac DC” at McDougall St (the primary warehouse). Its stock counts as Kotara stock (also: ['9']) | products/includes/availability.template.html:264-266, :270, :342, :416 | Online stock stops counting towards Kotara pick-up | Seen live. Fold into Kotara is owner-stated 2026-08-06 (comment at :264-266) |
7 | Maitland store stock, warehouse “Maitland” (store id 2) | products/includes/availability.template.html:271, :342, :416 | Maitland shows no stock | Seen live |
11 | Artarmon store stock, warehouse “Roof Rack & Towbar World Artarmon” (store id 3) | products/includes/availability.template.html:272, :342, :416 | Artarmon shows no stock | Seen live |
16 | Burwood store stock, warehouse “Altapac Burwood” (store id 4) | products/includes/availability.template.html:273, :342, :416 | Burwood shows no stock | Not seen live in a 24-product sample (ids 4, 7, 9, 11 appeared) |
The three places must agree: the STORES table (:269-274), the requiredWareIds list that pads missing warehouses with zero (:342), and the kit list 4,7,9,11,16 (:416). Stock in any other warehouse is ignored by the Pick up tab.
Store Finder store ids
Store ids are the Store Finder record ids: 1 Altapac Kotara, 2 Altapac Maitland, 3 Altapac Artarmon, 4 Altapac Burwood (ReDev Store Finder probe, 2026-09-15). Live #altapac-stores data shows the same ids, with misc5 slugs kotara, maitland, artarmon, burwood.
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
1 | Kotara | js/storeHours.js:29 (DEFAULT_STORE_ID = "1"); products/includes/availability.template.html:270; headers/includes/structured_data/structured_data.template.html:100-104; cms/home.template.html:82, :94 (first slide of the store carousel) | Open-now checks with no store fall back to a store that doesn’t exist; Kotara stock maps to nothing; Kotara loses its image, description and rating in search-engine data; the home store carousel has no active slide | Confirmed live |
2 | Maitland | availability.template.html:271; structured_data.template.html:105-109 | Stock and search-engine data for Maitland | Confirmed live |
3 | Artarmon | availability.template.html:272; structured_data.template.html:110-115 | Same, plus the “Roof Rack & Towbar World Artarmon” alternate name | Confirmed live |
4 | Burwood | availability.template.html:273; structured_data.template.html:116-121 | Same, plus the “Roof Rack & Towbar World Burwood” alternate name | Confirmed live |
1–4 in CMS content | data-store-id on data-store-field spans | Page content, not the theme: 37 spans on locations/* pages in Altapac-Content (fields phone, weekdays, saturday, sunday). Filled in by js/storeHours.js:257-276 | The span keeps its hand-typed text, which can go stale | Confirmed in Altapac-Content |
| misc5 slug | Store Finder custom field misc5 (Short Text, added 2026-09-23) = location page slug. Custom store field values are cut at 50 characters | footers/includes/scripts.template.html:38; structured_data.template.html:91-93; cms/contact.template.html:355, :374; headers/includes/head.template.html:21 (canonical of the /d/ store pages, not live yet, AUD-83) | Links go to /locations/<new slug>; if no page has that URL, they 404 | Live slugs match locations/kotara (14003), locations/maitland (14004), locations/artarmon (14005), locations/burwood (14006) |
The per-store image, description and aggregateRating in the search-engine data are typed into the template, keyed by store id (structured_data.template.html:100-121). The rating values (for example 4.0 from 240 ratings for Kotara) don’t update themselves.
The contact page also hard-codes the four store names as tab keys and URL hashes (kotara, maitland, artarmon, burwood) at cms/contact.template.html:268-277 and :413. A fifth store needs a template change there too.
Customer groups
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
8, 9, 10, 11, 12, 13 | The trade tiers (“… - DT”). Members see ex-GST trade pricing, with no RRP, savings or promo badges | products/includes/trade_group.template.html:7. Loaded by thumbs/product/template.html:7, home-card.template.html:5, list.template.html:76, box.template.html:10, products/includes/buying_options.template.html:75, bikerack/buycard.template.html:19, child_products.template.html:96 | A new trade group not on this list sees retail pricing. A renumbered group loses trade pricing | Owner-stated 2026-10-20 (comment at :2-5). Groups 7–13 are the “… - DT” groups created for the Drive Trade customer move (ReDev docs/records/2026-10-15-wholesale-pricing/spec.md). The names of 8–13 aren’t recorded |
2 (Wholesale), 7 (F&F - DT) | Deliberately not trade | trade_group.template.html:4-5 (comment only) | Nothing, unless someone expects them to get trade display | Owner-stated 2026-10-20. Group 2 = Wholesale confirmed by the price probe of 2026-10-20 |
default_groupid = 1 | Default (retail) group; anonymous visitors carry it | thumbs/product/template.html:2 and six other price_hide forks, active only when config wholesale is set | Price hiding for the default group, if wholesale is ever switched on | Probed 2026-07-27: default_groupid 1, wholesale empty |
Shipping category
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
20 | Pickup-only products. The product page hides the Delivery tab and opens Pick up | products/includes/availability.template.html:922 (sh_type_id eq '20') | A pickup-only product offers Delivery again, unless the shipping matrix happens to return no delivery option | Owner-confirmed 2026-07-29 that 20 is the pickup-only category (ReDev commit c791c2d). No probe run |
Product cards, the cart and search results don’t check this category, so a pickup-only product still gets an Add to Cart button on listings.
Content page ids and hard-coded page URLs
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
153 | Brands page, /brands/ | headers/includes/components/mobile-Menu.template.html:162 (“Our Brands” in the mobile menu) | Mobile “Our Brands” link breaks | Confirmed: Altapac-Content id 153 is brands/ (template brands), and the live mobile link resolves to /brands/ (200). The desktop “Explore More” link hard-codes /brands/ by URL instead (desk-Menu.template.html:265) |
95 | Store Finder page, /store-finder/ | stockists/template.html:14 (breadcrumb “Stockists”) | Breadcrumb points at a dead page | Page is inactive: Altapac-Content id 95 has Active: False, and /store-finder/ returns 404 live. /stockists/ also returns 404 |
14003–14006 | Location pages Kotara, Maitland, Artarmon, Burwood. Their main image URLs are typed into the search-engine data | structured_data.template.html:101, :106, :111, :117 (/assets/webshop/cms/03/14003-1.jpg and so on) | Store image in Google results breaks if the page is re-created or the image removed | All four images return 200 live |
Internal links typed into templates by URL (each confirmed in Altapac-Content and returning 200 live):
| URL | Page id | Where used |
|---|---|---|
/privacy-policy/ | 2 | cart/onepage.template.html:548; customer/login.template.html:166; customer/register/template.html:167; customer/wholesaleregister/template.html:198; products/includes/modals.template.html:111 (not live yet, AUD-32) |
/terms-and-conditions-of-sale/ | 13961 | cart/onepage.template.html:547 (not live yet, AUD-37) |
/current-promotions/ | 11319 (a category) | cms/promotions-list.template.html:152, the link shown when /promotions has no promotions (not live yet, AUD-63) |
/brands/ | 153 | headers/includes/components/desk-Menu.template.html:265 |
/learn/about-altapac/ | 145 | cms/serviceNew.template.html:398 |
/locations | 14002 | cms/serviceNew.template.html:399 |
/fair-price-policy/ | 13962 | cms/serviceNew.template.html:400 |
/contact-altapac/ | 223 | cms/serviceNew.template.html:401 |
Changing any of these URLs in cPanel breaks the link. Maropost may add a redirect, but this hasn’t been confirmed for this store.
Content type codes and ids
Menus, lists and product-page sections select content by content type code. One template line selects by numeric content type id.
The Altapac-Content pull of 2026-10-20 took every content page except the parts finder (421 pages). They sit in seven content type ids: 1 categories (175 pages), 2 info pages such as Privacy Policy and Contact Altapac (18), 9 forms (15), 10 brands (130), 12 services (38), 13 Learn and location pages (43) and 16 promotions (2). The parts-finder type’s id isn’t recorded.
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
category | Shop categories | desk-Menu.template.html:7; mobile-Menu.template.html:6; cms/products.template.html:36; cms/parent-category.template.html:102; cms/promotions.template.html:114 | Shop menus and category lists go empty | Live menus render |
services | Service pages | desk-Menu.template.html:119; mobile-Menu.template.html:62; cms/service-parent.template.html:150 | Services menu and child cards go empty | Live menus render |
learn | Connect menu and location pages | desk-Menu.template.html:216; mobile-Menu.template.html:113; cms/learn-parent.template.html:161 | Connect menu and /locations child list go empty | Live menus render |
brand | Brand pages | desk-Menu.template.html:252 (11 tiles); cms/brands.template.html:85 | Brand tiles and /brands list go empty | Live |
promotions | Promo pages | products/template.html:4; products/bikeRacks.template.html:4 (product-page promo banner); cms/promotions-list.template.html:112 (/promotions list) | Promo banners and the promotions list go empty | Live promo pages are content type 16 |
parts-finder | Parts-finder pages, the store’s real code. Links products to vehicles (“More for your Vehicle”) | products/template.html:215; products/bikeRacks.template.html:252 | Section never shows | Live |
part-finder | Misspelling in the parent-category template. Matches no content type, so the template’s parts-finder branch never runs | cms/parent-category.template.html:321 | — | Wrong code; should be parts-finder |
Content type id 1 | Category type | cms/parent-category.template.html:101 | Category branch on that template stops matching | Altapac-Content: type 1 holds 175 category pages |
Content type ids 1, 10, 16, 18, 23, 25 | Types whose page 2+ canonical URL keeps ?pgnum= (not live yet, AUD-70) | headers/includes/head.template.html:12 | Paged listings of a missing type canonicalise to page 1 | 1 = categories, 10 = brands, 16 = promotions (Altapac-Content pull). 18, 23 and 25 hold none of the pulled pages, so each is either the parts-finder type or holds no pages |
Category ids
No loaded template filters on a hard-coded category id. The only category ids in the theme are in two files that nothing loads (see Not loaded).
Form URLs
| Value | Page id | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
/form/contact-us/ | 74 | products/includes/buying_options.template.html:179 (price on request), bikerack/buycard.template.html:96, bikerack/template.html:160, modals.template.html:80; cms/contact.template.html:290 (Kotara tab) | Enquiry fallbacks and the Kotara contact form show a 404 | 200 live |
/form/contact-modal/ | 154 | footers/includes/contactModal.template.html:86 | The site-wide contact modal is blank | 200 live |
inp-msg | — | contactModal.template.html:287: the enquiry text goes into the contact-modal form’s msg field through this URL parameter | Enquiry buttons stop prefilling the message | Prefill from the URL confirmed working 2026-08-13 (ReDev content/README.md) |
/form/contact-altapac-maitland/ | 225 | cms/contact.template.html:302 | Maitland tab shows a 404 | 200 live |
/form/contact-artarmon/ | 14015 | cms/contact.template.html:314 | Artarmon tab shows a 404 | 200 live |
/form/contact-burwood/ | 14016 | cms/contact.template.html:326 | Burwood tab shows a 404 | 200 live |
/form/price-match-request/ and form/contact-us/contact-us-headless-form/ appear only inside commented-out modals (products/includes/modals.template.html:21-60). They return 404 live and do nothing.
Export feeds
The feed definitions live in cPanel export settings, not in any repo.
| Value | Meaning | Where used | What breaks if it changes | Status |
|---|---|---|---|---|
/export//service-product.json | Products shown on service pages. Fields read: category, name, price, description, img_url, img_url2. A product shows on a service page when its comma-separated category contains that page’s content id | cms/services.template.html:147, :185; cms/serviceNew.template.html:212 | Service pages show no products, with no error | 200 live, 99 records. Only 4 have a category, all 106 (services/window-tinting/automotive-window-tinting/), which renders no product block live. The feed isn’t strict JSON (quotes are doubled CSV-style); the theme repairs it line by line |
/export//pfdata.json | Parts finder tree. Fields: id, name, parent_id, url | js/pf_feed_V0.5.4.js:5, loaded by headers/includes/components/pf_feed_App_v1.template.html:40 | Parts finder dropdowns are empty | 200 live, about 1.5 MB. Cached per browser session in sessionStorage key pfdata (js/pf_feed_V0.5.4.js:15, :28), so shoppers see feed changes only in a new session |
Config values
Read with [@config:…@]. Only values with theme-specific behaviour are listed; stock settings such as company_name are left out.
| Key | Meaning | Where used | What breaks | Status |
|---|---|---|---|---|
Operating_Exceptions | Public-holiday closures. Must be a JavaScript object literal, not JSON | footers/includes/scripts.template.html:57 | Empty or malformed: the store-hours script fails and every store shows closed | Set live (non-empty) |
GOOGLE_GEO_API | Google key for postcode geocoding (store distance, Pick up default) and static store maps | products/includes/availability.template.html:302; cms/store_finder.template.html:57, :60; stockists/template.html:50, :53 | Stores are no longer ranked by distance and the Pick up tab isn’t chosen automatically. Store maps break | Set live. It is printed in page source, so it must be a browser-restricted key |
Reviews_io | Switches REVIEWS.io widgets and rating snippets on | products/includes/reviews.template.html:1; product_information.template.html:12, :170; buying_options.template.html:129; thumbs/product/template.html:35; list.template.html:44; home-card.template.html:33; bikerack/template.html:85; bikerack/buycard.template.html:73 | — | Off. Probed 0 on 2026-07-27; no reviews widget on a sampled live product on 2026-10-21 |
COMPANY_PHONE | Phone on Within Reach, the contact modal, footer, service pages, bike-rack CTA and dropship modal | cms/home.template.html:63; footers/includes/contactModal.template.html:29, :216; footers/template.html:158-162; cms/services.template.html:153; cms/serviceNew.template.html:218; products/includes/bikerack/template.html:163; products/includes/modals.template.html:80-81 | Every Call link changes | Live: (02) 4941 4499 |
wholesale, default_groupid | Group price hiding (see Customer groups) | thumbs/product/template.html:2 and six other forks | — | wholesale empty, default_groupid 1 (probed 2026-07-27) |
ALLOW_NOSTOCK_CHECKOUT | Printed as a JavaScript variable for the theme’s scripts | footers/includes/scripts.template.html:19 | — | Probed 1 |
GOOGLE_VERIFICATION | Search Console verification meta tag | headers/includes/head.template.html:16 | Verification tag disappears | Tag present live |
Operating_Hours | Retired 2026-09-15. Nothing reads it | — | — | Hours now come from Store Finder custom fields misc1–4 (weekdays open, weekdays close, Saturday open, Saturday close; Short Text, HH:MM) |
Custom config values such as Operating_Exceptions, GOOGLE_GEO_API and COMPANY_PHONE are edited in cPanel under Custom links > Custom Configs.
Advert groups
Group names must match exactly. A missing or renamed group hides its section without any error. Adverts beyond the limit aren’t shown.
| Group | Limit | Where used | Shows | Status |
|---|---|---|---|---|
home_news | 4 | cms/home.template.html:5 | Home news carousel | Live: 4 slides |
featureCards | 3 | cms/home.template.html:147 | Home service cards | Live: 3 cards |
home_banner | 10 | cms/home.template.html:168 | Home “What do you get” carousel | Renders live |
category_ad | 10 | cms/category.template.html:223; cms/parent-category.template.html:133 | Category page banner | Source only |
footer-usps | 4 | footers/template.html:10 (also category:'0') | Footer USP strip | Not rendering live: no USP strip on the home page, so the group is empty, missing or its adverts don’t match category:'0' |
footer-logo | 1 | footers/template.html:150 (also category:'0') | Footer logo | Not in use live: the footer falls back to /assets/website_logo.png |
The category templates also show adverts with an empty group name and inherit:'n' (cms/category.template.html:276, :303; cms/parent-category.template.html:186, :212). Those are adverts with no group set, chosen by category, not by group name.
Content zones
| Zone id | Where used | Holds | What breaks | Status |
|---|---|---|---|---|
announcement | headers/template.html:32 | Site-wide announcement bar | Bar disappears | In use live |
footer blurb | footers/template.html:156 | Text under the footer logo | Text disappears | Empty live |
terms | footers/template.html:252 | Terms modal body (register, login, trade registration, notify-me). On altapac.com today checkout uses it too (not live yet, AUD-37) | Modal is empty | In use live: holds the website terms of use |
shop_menu_content | headers/includes/components/desk-Menu.template.html:64 | A bare content id used as the Shop mega-menu fallback panel | Fallback panel is empty if the id is wrapped in <p> or points at a deleted page | Source only. Cached 24 hours |
serve_menu_content | desk-Menu.template.html:175 | Same, for the Services menu | Same | Source only. Cached 24 hours |
Wholesale Form Text | customer/login.template.html:42; customer/register/template.html:42 | Trade account blurb | Falls back to “Apply for a Trade Account and get trade pricing and priority support.” | Not checked |
wholesale_terms | customer/wholesaleregister/template.html:192, :209 | Trade account terms | Terms empty | Not checked |
Zone ids with spaces and capitals (footer blurb, Wholesale Form Text) must be entered exactly.
Menu Manager menus
| Menu id | Where used | Notes | Status |
|---|---|---|---|
web_footer | footers/template.html:132 | Footer link columns. Cached 24 hours (:131) | Renders live |
category_grid | cms/home.template.html:121 | Home category grid. Each item’s icon is /assets/images/homepage/grid/s_icon###.png (64px) and l_icon###.png (240px), where ### is the item’s hierarchy value (:132-133) | Live: 18 items, 001–018, all icons return 200 |
web_information | cms/includes/sidebar.template.html:292 | Rendered hidden (display: none !important). Cached 24 hours | No visible effect |
Third-party ids and keys
Secret values are not printed here.
| Integration | What the theme depends on | Where | What breaks | Status |
|---|---|---|---|---|
| Builder.io | Model name = the page’s Label 2. The API key is compiled into the bundle, not read from a config | cms/builder-content.template.html:1; bundle src/content-app/index-DJYEhrs8.js | Wrong Label 2: blank page. Key change: needs a rebuilt bundle | No live page uses builder-content (Altapac-Content) |
| Algolia | App id, search key and index name are constants in the separate altapac_instantsearch-app repo (src/algoliaConfig.ts:8-11), compiled into the theme bundle | footers/includes/scripts.template.html:62-63; bundle src/algolia-search/altapac_instantsearch-app.c477bea9.js | Key rotation or index rename: search breaks until the app is rebuilt and the hashed bundle filename is updated in scripts.template.html | Bundle loaded live. Expects neto_is_default_group, which the theme doesn’t set (see Customer groups) |
| Typeform | Embed ID (data-tf-live) = the page’s Label 3. Rendered only when Description 2 has content | cms/services.template.html:233-235; cms/serviceNew.template.html:298-300 | Wrong id: empty embed | A live service page (/services/window-tinting/) renders a Typeform embed |
| REVIEWS.io | Store id altapac.com typed into the widget | products/includes/reviews.template.html:7 | Reviews from the wrong store, or none | Off (see Reviews_io) |
GOOGLE_GEO_API, GOOGLE_VERIFICATION | See Config values | — | Both set live |
Hard-coded asset paths
Replacing a file at the same path is safe. Renaming or deleting it isn’t.
| Path | Used for | Where used | Live |
|---|---|---|---|
/assets/images/glenworth.jpg | Product-page promo banner background when the promo page has no image | products/template.html:13; products/bikeRacks.template.html:13 | 200 |
/assets/images/4x4-sketch.jpg | Card image fallback when a page has no Alt image 1 | cms/content.template.html:148; cms/default.template.html:85; cms/promotions.template.html:66 | 200 |
/assets/images/lost_the_trail-noBG_500x500.png | Empty-list image | cms/default.template.html:142 | 200 |
/assets/images/homepage/Dometic-Camp_360x1257.jpg | Home “Within Reach” image | cms/home.template.html:71 | 200 |
https://www.altapac.com/assets/images/DSC01901.jpg | serviceNew “Why Choose Altapac?” image (absolute URL) | cms/serviceNew.template.html:333 | 200 |
/assets/images/footer/That's%20what%20you%20get%404x_480x854.png | Footer benefits image | footers/template.html:114 | 200 |
/assets/images/homepage/grid/s_icon###.png, l_icon###.png | Category grid icons | cms/home.template.html:132-133 | 001–018 return 200 |
/assets/pixel.gif | Placeholder when a menu page has no Alt image 1 | desk-Menu.template.html:53, :68, :164, :179, :200, :229, :260; mobile-Menu.template.html:18, :71, :122; cms/brands.template.html:99 | 200 |
/assets/website_logo.png | Open Graph default image; footer logo fallback | headers/includes/head.template.html:8; footers/template.html:155 (through config:imageurl) | 200 |
/assets/favicon_logo.png | Favicon | headers/includes/head.template.html:22; customer/print/template.html:6; customer/nr_print/template.html:6 | 200 |
/assets/webshop/cms/03/14003-1.jpg to /06/14006-1.jpg | Store images in search-engine data | structured_data.template.html:101, :106, :111, :117 | 200 |
/assets/images/discont.png (products/includes/buying_options.template.html:65) is commented out and returns 404 live. /assets/images/homepage/banners/[@ad_id@].png is only in thumbs/advert/srcset-banner.html, which no advert call uses.
Not loaded (ignore these)
These files contain hard-coded ids but no template loads them. Changing the ids they mention has no effect.
| File | What it holds |
|---|---|
headers/includes/structured_data/category_structured_data.template.html | 125 content_id comparisons (124 distinct ids) and made-up rating data. None of the ids belongs to an Altapac category in Altapac-Content. Recommended for deletion |
cms/includes/bpf_count.template.html | Category ids 581325 and 581292 (not in Altapac-Content) |
cms/includes/home-sections/image-w-overlay.html | Advert group overlay_ad |
thumbs/advert/srcset-banner.html | /assets/images/homepage/banners/ paths |
js/pf_feed_V0.5.2.js | Older parts finder script (/export//pfdata.json); the header loads pf_feed_V0.5.4.js |
When you change X in cPanel, also update Y
- Add, remove or renumber a warehouse: update
STORES,requiredWareIdsand the kit list inproducts/includes/availability.template.html(:269-274,:342,:416). - Add a store (new Store Finder record): add a
STORESrow with its warehouse id, a per-store arm instructured_data.template.html:100-121, a tab, form and hash entry incms/contact.template.html, and a/locations/<slug>page matching its misc5. Hours, phone and the store JSON pick it up automatically. - Re-create or delete a Store Finder record: the id changes. Update every store id
1–4listed above, includingDEFAULT_STORE_IDinjs/storeHours.js:29and thedata-store-idspans in location page content. - Change a store’s misc5 slug: rename the matching
locations/…page URL to the same slug. - Add a trade customer group: add its id to
products/includes/trade_group.template.html:7. - Create or renumber the pickup-only shipping category: update
'20'inproducts/includes/availability.template.html:922. - Change the URL or id of Brands (153), a policy page,
/current-promotions/,/locations,/contact-altapac/or a contact form: update the template lines in Content page ids and Form URLs. - Reactivate or replace Store Finder (95): check the stockists breadcrumb still points at the right page.
- Rename a content type code (
category,services,learn,brand,promotions, the parts finder type): update everycontent_type:line above. - Edit an export feed (
service-product,pfdata): keep the URL and field names. To show products on a service page, put that page’s content id in the product field the feed exports ascategory. - Empty or rewrite
Operating_Exceptions: keep it a valid JavaScript object literal. Never leave it blank. - Rename an advert group, content zone or Menu Manager menu: update its id in the template line above, or the section disappears.
- Put a page id in
shop_menu_contentorserve_menu_content: enter the bare number with no formatting, and allow up to 24 hours for the menu to refresh. - Reorder the
category_gridmenu: re-check the grid icons on the home page. - Rotate the Algolia, Builder.io or Google key: Algolia and Builder.io need a rebuilt bundle and an updated bundle filename in the theme. Google only needs the config value.
- Rename or delete an image under
/assets/images/: check the asset table first.
For developers
Sources and method
Theme: ~/src/altapac-org/Altapac-ReDev, branch development, read 2026-10-21. Every row above comes from a grep of src/templates and src/js (vendor libraries excluded) for: warehouse_id/wareId and quoted ids; user:group_id; store_id; sh_type_id; content_type_id; numeric id:/filter_category: parameters; /export/; /form/; every [@config:…@] key; ad_group:; content_zone id:; menu id:; content_type: and type: codes; /assets/ paths and absolute altapac.com URLs; typeform, builder, reviews.io, algolia. Whether an include is loaded was checked by matching every load_template file: and load_ajax_template call against the file list.
Files relied on most:
src/templates/products/includes/availability.template.html(warehouses, store join, shipping category 20,GOOGLE_GEO_API)src/templates/products/includes/trade_group.template.html(trade groups)src/templates/footers/includes/scripts.template.html(store JSON,Operating_Exceptions, Algolia bundle)src/js/storeHours.js(default store,data-store-fieldspans)src/templates/headers/includes/structured_data/structured_data.template.html(per-store SEO data)src/templates/headers/includes/components/desk-Menu.template.html,mobile-Menu.template.html(menu zones, page 153, caches)src/templates/footers/template.html,src/templates/cms/home.template.html(advert groups, zones, menus, assets)src/templates/footers/includes/contactModal.template.html,src/templates/cms/contact.template.html(form URLs)src/templates/cms/services.template.html,serviceNew.template.html,src/js/pf_feed_V0.5.4.js(export feeds, Typeform)src/templates/cms/builder-content.template.html,src/templates/products/includes/reviews.template.html.claude/skills/base-templating/references/value-formats.md(2026-07-27 config probe),docs/map/store-data/StoreData.md,docs/records/2026-09-25-repo-audit/backlog.md(AUD-29)~/src/altapac-org/altapac_instantsearch-app/src/algoliaConfig.ts,src/Hit.tsx(Algolia constants,neto_is_default_group)
Content: ~/src/altapac-org/Altapac-Content/pages/**/meta.json (421 pages, pulled 2026-10-20; commit 369acdd records that the pull skipped only the parts finder) for page ids, URLs, content types, Active flags and data-store-id spans. cPanel observations: ReDev docs/probes/RESULTS.md (Store Finder probe 2026-09-15, price probe 2026-10-20), docs/map/store-data/issues.md (misc5), docs/records/2026-10-15-wholesale-pricing/spec.md (customer groups), content/README.md (contact-modal prefill) and commit c791c2d (shipping category 20).
Live checks: read-only HTTP requests to https://www.altapac.com on 2026-10-21 (home page, one category page, 24 product pages, every listed URL and asset, both export feeds). Account pages return a bot challenge, so Wholesale Form Text and wholesale_terms couldn’t be checked.