Precision Affiliates Edge Method

Edge Method course, Module 5

Catalogue method: October 2026 feasibility and Marketing API check

Three questions, answered from Meta's own developer documentation (read 13 October 2026) and from what the course and its Q&A calls show. Nothing was called against the ad account; this is a paper check.

1. Still viable in October 2026?
Mechanically yes, with a caveat

Every piece the method relies on is a current, documented Meta feature: catalogue ads with product-level video, the single image or video format, the "prioritise video" option, ad-level destination override and $1 ad set budgets. The caveat is the premise: Meta's docs say catalogue videos are downloaded and put through integrity review once the item is pulled into a product-level video ad, so the video is not unreviewed, only reviewed later and separately from the ad shell. The course itself says "nobody knows how long this will last".

2. Can we set campaigns up like this?
Yes

The 1-25-1 structure is ordinary Ads Manager: Sales objective, ad set budgets (ABO), one catalogue ad per ad set, 25 duplicates. The only moving part is which UI variant the account gets; the course documents three (standard, "new UI" ad-level catalogue, and the May 2026 Commerce Manager "create campaign" button workaround).

3. Can it be done through the API?
Yes, end to end

Catalogue, items with image plus video, product set, pixel link, campaign, ad set, creative with single-video format and destination override, ad, and 24 ad set copies all have documented endpoints. Two creative details need one paused dry build to confirm before trusting them (marked below). No calls were made.

What the method actually is (from lessons 5.4, 5.5, 5.9 and the launch checklist)

Field-by-field: course setting to Marketing API

Course stepAPI call and fieldsStatus
Create the cataloguePOST /{business_id}/owned_product_catalogs with name (= ad name) and vertical. Default is commerce; media_titles exists for streaming media but product-level video is documented on product items, so use commerce.documented
Connect the pixelPOST /{catalog_id}/external_event_sources with external_event_sources=[PIXEL_ID]documented
Add the item: bland image, then the video, title = page name, bland description, white-hat link; 5 itemsPOST /{catalog_id}/items_batch, item_type=PRODUCT_ITEM, five CREATE requests each with id, title, description, availability, condition, price, link, brand, image:[{url}], video:[{url}]. Video file up to 200 MB, hosted on a public HTTPS URL. Check with GET /{catalog_id}/check_batch_request_status and the item's video_fetch_status.documented
Product set the ad promotesPOST /{catalog_id}/product_sets with name and filter={} (all items)documented
Campaign: Sales, catalogue ads, ABO, no budget sharingPOST /act_{id}/campaigns: objective=OUTCOME_SALES, special_ad_categories=[], no campaign budget (ad set budgets = ABO), is_adset_budget_sharing_enabled=0, status=PAUSED. The older catalogue guide still shows PRODUCT_CATALOG_SALES with promoted_object.product_catalog_id; legacy objectives are listed as deprecated since v17.confirm on dry build
Ad set: Website, maximise conversions, Purchase, $1, midnight start, targeting, placementsPOST /act_{id}/adsets: optimization_goal=OFFSITE_CONVERSIONS, billing_event=IMPRESSIONS, promoted_object={product_set_id, pixel_id, custom_event_type:PURCHASE}, daily_budget=100 (cents), start_time, targeting={geo_locations.countries, age_min, age_max, genders, locales, publisher_platforms:[facebook,instagram,messenger]} (omit audience_network; Threads is excluded by leaving it out of publisher_platforms), status=PAUSED. Minimum budget read from /act_{id}?fields=min_daily_budget,currency.documented
Ad: single image or video, prioritise video, headline = page, Learn more, no primary text, enhancements offPOST /act_{id}/adcreatives: product_set_id, object_story_spec={page_id, template_data:{name:"<page name>", call_to_action:{type:LEARN_MORE}, force_single_link:true, multi_share_end_card:false, format_option:"single_video", link:"<lander>"}}, degrees_of_freedom_spec={creative_features_spec:{media_type_automation:{enroll_status:OPT_IN}, standard_enhancements:{enroll_status:OPT_OUT}}}, url_tags="cmp={{campaign.id}}&...". Docs: force_single_link = single product link ad instead of carousel; single_video = "prioritise video", single format only; media_type_automation = allow product video.confirm on dry build
Manual destination + override catalogue deep linksTwo documented routes. (a) template_url_spec={web:{url:"<lander with params>"}} on the creative: Meta's ad-level URL template for catalogue ads (documented for click trackers, takes a fixed URL). (b) Set the item's link to the real lander in the first place, which is what the override achieves. The course uses google.com as the item link so the catalogue looks white-hat; route (a) keeps that.confirm on dry build
AdPOST /act_{id}/ads with adset_id, creative={creative_id}, status=PAUSEDdocumented
Duplicate the ad set 24 timesPOST /{adset_id}/copies with deep_copy=true, status_option=PAUSED, rename_strategy=NO_RENAME; up to 50 copy sub-requests per async batch call. 24 copies = one batch.documented
New ad = new campaign (new catalogue, link, names)Repeat the whole sequence per ad, or POST /{campaign_id}/copies then update the creative. Repeating is cleaner: one catalogue, one creative, one tracking link per campaign is exactly the validation rule.documented
Troubleshooting: video missing from catalogueRead video_fetch_status and videos on the item (GET /{item_id}?fields=videos,video_fetch_status) before creating the ad; the UI bug the course hits (video silently dropped) is visible here without opening Commerce Manager.documented

What cannot be settled on paper

Risk notes, October 2026. Meta's product-video docs state videos are integrity-reviewed when used in a product-level video ad, so the method lowers rejection odds (the course claims 90% fewer) rather than removing review; a video that would be rejected as a normal ad can still be rejected later. Third-party reports through 2026 describe higher ban rates for accounts with heavy ad set churn and automated budget edits (one cites a 5 May 2026 Meta rate-limit change on ad set budget updates); none are Meta statements. Building via the API should create everything paused, in one batch, and never touch budgets in loops. Ad objects go live only on Ryan's explicit yes per object.

Prerequisites for the API route

Sources read 13 Oct 2026: Meta for Developers, Advantage+ catalog ads get started; Allow product video and its FAQ; Advantage+ creative for catalog; Ad Campaign (objective enum); Ad Set reference; Ad Creative reference; Product Catalog reference; items_batch reference; product_sets; external_event_sources; Ad Set copies. Course: Module 5 lessons 5.1, 5.4, 5.5, 5.8, 5.9; Launch Checklist PDF; Q&A calls 3, 4, 5, 13.