{"id":588,"date":"2026-11-07T10:47:30","date_gmt":"2026-11-07T15:47:30","guid":{"rendered":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/"},"modified":"2026-11-07T10:47:30","modified_gmt":"2026-11-07T15:47:30","slug":"how-to-upload-a-custom-catalog","status":"publish","type":"page","link":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/","title":{"rendered":"How to upload a custom product catalog"},"content":{"rendered":"\n<!--\n DMpro Help Center: How-To\n URL: https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/\n-->\n<style>\n.kb-page{\n  --coral:#EE6055; --mint:#3DE8B7; --ink:#1A1A1A; --paper:#FAFAF7; --pen:#5F5E5A;\n  --yellow:#F8E170; --blue:#365eff; --line:#ececec;\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n  color:var(--ink); line-height:1.62; max-width:840px; margin:0 auto; padding:0 20px 72px; box-sizing:border-box;\n}\n.kb-page *{box-sizing:border-box;}\n.kb-page a{color:var(--blue); text-decoration:none;}\n.kb-page a:hover{text-decoration:underline;}\n.kb-page .kb-crumb{font-size:13px; color:var(--pen); padding:26px 0 0; display:flex; gap:8px; flex-wrap:wrap; align-items:center;}\n.kb-page .kb-crumb a{color:var(--pen);}\n.kb-page .kb-crumb a:hover{color:var(--coral);}\n.kb-page .kb-crumb span{opacity:.5;}\n.kb-page .kb-head{padding:18px 0 6px;}\n.kb-page .kb-eyebrow{display:inline-block; font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;\n  color:var(--coral); background:rgba(238,96,85,.1); padding:5px 12px; border-radius:999px; margin-bottom:14px;}\n.kb-page h1{font-size:clamp(26px,4vw,36px); line-height:1.15; margin:0 0 12px; font-weight:800; letter-spacing:-.02em;}\n.kb-page .kb-lead{font-size:17px; color:var(--pen); margin:0 0 8px;}\n.kb-page .kb-acc{margin-top:26px; border-top:1px solid var(--line);}\n.kb-page .kb-item{border-bottom:1px solid var(--line);}\n.kb-page .kb-q{width:100%; text-align:left; background:none; border:0; cursor:pointer; font:inherit; color:var(--ink);\n  display:flex; gap:14px; align-items:flex-start; padding:20px 4px; font-size:17px; font-weight:650;}\n.kb-page .kb-q:hover{color:var(--coral);}\n.kb-page .kb-q .kb-qi{flex:none; width:22px; height:22px; margin-top:1px; transition:transform .2s; color:var(--coral);}\n.kb-page .kb-item.open .kb-q .kb-qi{transform:rotate(45deg);}\n.kb-page .kb-q .kb-qt{flex:1;}\n.kb-page .kb-a{max-height:0; overflow:hidden; transition:max-height .3s ease;}\n.kb-page .kb-a-inner{padding:0 4px 22px 36px; font-size:15.5px; color:#33322f;}\n.kb-page .kb-a-inner p{margin:0 0 13px;}\n.kb-page .kb-a-inner ul,.kb-page .kb-a-inner ol{margin:0 0 13px; padding-left:20px;}\n.kb-page .kb-a-inner li{margin:0 0 7px;}\n.kb-page .kb-a-inner strong{color:var(--ink);}\n.kb-page .kb-a-inner h3{font-size:16px; font-weight:700; margin:20px 0 10px; color:var(--ink);}\n.kb-page .kb-a-inner code{background:var(--paper); padding:2px 6px; border-radius:4px; font-size:14px; font-family:\"SF Mono\",\"Menlo\",Consolas,monospace;}\n.kb-page .kb-a-inner blockquote{margin:0 0 13px; padding:12px 16px; background:var(--paper); border-left:3px solid var(--line); border-radius:0 8px 8px 0; color:var(--pen);}\n.kb-page .kb-a-inner .kb-tip{background:var(--paper); border-left:3px solid var(--mint); border-radius:8px; padding:12px 16px; margin:0 0 13px; font-size:14.5px;}\n.kb-page .kb-a-inner .kb-note{background:#fff8e6; border-left:3px solid var(--yellow); border-radius:8px; padding:12px 16px; margin:0 0 13px; font-size:14.5px;}\n.kb-page .kb-a-inner .kb-security{background:linear-gradient(135deg, #e5f3ec 0%, #d5eae0 100%); border-left:3px solid #2d8f5f; border-radius:8px; padding:14px 18px; margin:0 0 13px; font-size:14.5px; display:flex; gap:12px; align-items:flex-start;}\n.kb-page .kb-a-inner .kb-security-ico{flex:none; width:36px; height:36px; border-radius:8px; background:#2d8f5f; color:#fff; display:flex; align-items:center; justify-content:center; font-size:18px;}\n.kb-page .kb-a-inner .kb-security-body{flex:1;}\n.kb-page .kb-a-inner .kb-security-body strong{color:#1a5f3a; display:block; margin-bottom:2px;}\n.kb-page .kb-a-inner .kb-table-wrap{overflow-x:auto; margin:0 0 13px;}\n.kb-page .kb-a-inner .kb-table{width:100%; border-collapse:collapse; font-size:14px; border:1px solid var(--line); border-radius:8px; overflow:hidden;}\n.kb-page .kb-a-inner .kb-table th{background:var(--paper); font-weight:700; text-align:left; padding:10px 12px; border-bottom:1px solid var(--line);}\n.kb-page .kb-a-inner .kb-table td{padding:9px 12px; border-bottom:1px solid var(--line);}\n.kb-page .kb-a-inner .kb-table tr:last-child td{border-bottom:none;}\n.kb-page .kb-mockup{margin:22px auto 26px; max-width:640px; padding:22px; background:#f4f5f7; border-radius:16px; border:1px solid var(--line);}\n.kb-page .kb-mockup svg{width:100%; height:auto; display:block; border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.08);}\n.kb-page .kb-mockup-caption{margin:12px 0 0; font-size:13px; color:var(--pen); text-align:center; font-style:italic;}\n.kb-page .kb-related{margin-top:40px; background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:22px 24px;}\n.kb-page .kb-related h2{font-size:15px; text-transform:uppercase; letter-spacing:.08em; color:var(--pen); margin:0 0 14px;}\n.kb-page .kb-related ul{list-style:none; margin:0; padding:0; display:grid; gap:10px;}\n.kb-page .kb-related a{display:flex; gap:8px; align-items:center; font-weight:600; font-size:15px;}\n.kb-page .kb-cta{margin-top:34px; background:var(--ink); color:#fff; border-radius:20px; padding:32px 28px; text-align:center;}\n.kb-page .kb-cta h3{margin:0 0 8px; font-size:21px; font-weight:800;}\n.kb-page .kb-cta p{margin:0 0 20px; color:#cfcfcf; font-size:15px;}\n.kb-page .kb-cta-btns{display:flex; gap:12px; justify-content:center; flex-wrap:wrap;}\n.kb-page .kb-btn{display:inline-flex; align-items:center; gap:8px; padding:13px 24px; border-radius:999px; font-weight:700; font-size:14px;}\n.kb-page .kb-btn svg{width:18px;height:18px;}\n.kb-page .kb-btn-coral{background:var(--coral); color:#fff;}\n.kb-page .kb-btn-coral:hover{background:#e2483b; text-decoration:none;}\n.kb-page .kb-btn-ghost{background:transparent; color:#fff; border:1.5px solid rgba(255,255,255,.3);}\n.kb-page .kb-btn-ghost:hover{border-color:#fff; text-decoration:none;}\n.kb-page .kb-back{display:inline-flex; align-items:center; gap:7px; margin-top:30px; font-weight:600; font-size:14px; color:var(--pen);}\n.kb-page .kb-back:hover{color:var(--coral);}\n.kb-page .kb-contact{margin:34px 0 0; min-height:790px;}\n\n.kb-page .kb-fig{margin:14px 0 18px;}\n.kb-page .kb-fig img{display:block; width:100%; height:auto; border:1px solid var(--line); border-radius:12px; box-shadow:0 6px 24px rgba(0,0,0,.08);}\n.kb-page .kb-fig figcaption{font-size:13px; color:var(--pen); margin-top:8px; text-align:center;}\n.kb-page .kb-demo{margin:22px 0 18px;}\n.kb-page .kb-demo-tag{display:inline-block; background:var(--coral); color:#fff; font-weight:700; font-size:12px; letter-spacing:.06em; text-transform:uppercase; padding:4px 10px; border-radius:999px; margin-bottom:8px;}\n\n.kb-page .kb-meta{display:flex; gap:10px; flex-wrap:wrap; margin:14px 0 0; font-size:13px; color:var(--pen);}\n.kb-page .kb-meta span{background:var(--paper); border:1px solid var(--line); padding:4px 12px; border-radius:999px;}\n.kb-page .kb-needs{margin:26px 0 8px; background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:18px 22px;}\n.kb-page .kb-needs h2{font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--pen); margin:0 0 10px;}\n.kb-page .kb-needs ul{margin:0; padding-left:20px;} .kb-page .kb-needs li{margin:0 0 6px; font-size:15px;}\n.kb-page .kb-steps{margin:30px 0 0;}\n.kb-page .kb-step{display:flex; gap:18px; margin:0 0 34px;}\n.kb-page .kb-step-n{flex:none; width:38px; height:38px; border-radius:50%; background:var(--coral); color:#fff; font-weight:800; display:flex; align-items:center; justify-content:center; margin-top:2px;}\n.kb-page .kb-step-b{flex:1; min-width:0; font-size:16px; color:#33322f;}\n.kb-page .kb-step-b h2{font-size:20px; line-height:1.3; margin:4px 0 10px; font-weight:800; color:var(--ink); letter-spacing:-.01em;}\n.kb-page .kb-step-b p{margin:0 0 12px;} .kb-page .kb-step-b ul,.kb-page .kb-step-b ol{margin:0 0 12px; padding-left:22px;} .kb-page .kb-step-b li{margin:0 0 6px;}\n.kb-page .kb-step-b code{background:#f4f4f2; border:1px solid var(--line); padding:1px 6px; border-radius:4px; font-size:14px;}\n.kb-page .kb-step-b pre{background:#1a1a1a; color:#f4f4ef; border-radius:10px; padding:14px 16px; margin:0 0 13px; overflow-x:auto; font-size:13px; line-height:1.55;}\n.kb-page .kb-step-b pre code{background:none; border:0; padding:0; color:inherit; font-size:inherit; white-space:pre;}\n.kb-page .kb-step-b .kb-tip{background:var(--paper); border-left:3px solid var(--mint); border-radius:8px; padding:12px 16px; margin:0 0 13px; font-size:15px;}\n.kb-page .kb-step-b .kb-warn{background:#fff2f0; border-left:3px solid var(--coral); border-radius:8px; padding:12px 16px; margin:0 0 13px; font-size:15px;}\n.kb-page .kb-box{margin:34px 0 0; border:1px solid var(--line); border-radius:16px; padding:20px 24px; background:#fff;}\n.kb-page .kb-box h2{font-size:20px; margin:0 0 12px; font-weight:800;}\n.kb-page .kb-box ul{margin:0; padding-left:20px;} .kb-page .kb-box li{margin:0 0 8px;}\n.kb-page .kb-prob{border-top:1px solid var(--line); padding:12px 0;} .kb-page .kb-prob:first-of-type{border-top:0;}\n.kb-page .kb-prob summary{cursor:pointer; font-weight:700; list-style:none;} .kb-page .kb-prob summary::-webkit-details-marker{display:none;}\n.kb-page .kb-prob summary:before{content:'+'; color:var(--coral); font-weight:800; margin-right:10px;} .kb-page .kb-prob[open] summary:before{content:'\\\\2212';}\n.kb-page .kb-prob div{padding:8px 0 0 22px; font-size:15px;}\n.kb-page .kb-cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px; list-style:none; margin:0; padding:0;}\n.kb-page .kb-cards a{display:block; border:1px solid var(--line); border-radius:12px; padding:14px 16px; font-weight:650; font-size:15px; color:var(--ink); background:#fff; height:100%;}\n.kb-page .kb-cards a:hover{border-color:var(--coral); text-decoration:none; color:var(--coral);}\n.kb-page .kb-cards small{display:block; font-weight:500; color:var(--pen); font-size:13px; margin-top:4px; line-height:1.4;}\n.kb-page .kb-hubsearch{width:100%; margin:18px 0 0; padding:14px 18px; border:1.5px solid var(--line); border-radius:14px; font-size:16px; font-family:inherit;}\n.kb-page .kb-hubsearch:focus{outline:none; border-color:var(--coral);}\n.kb-page .kb-hgroup{margin:34px 0 0;} .kb-page .kb-hgroup h2{font-size:22px; font-weight:800; margin:0 0 4px;} .kb-page .kb-hgroup p{margin:0 0 14px; color:var(--pen); font-size:15px;}\n.kb-page .kb-empty{display:none; color:var(--pen); margin:22px 0;}\n@media (max-width:560px){.kb-page .kb-step{gap:12px;}.kb-page .kb-step-n{width:32px;height:32px;font-size:14px;}}\n.kb-page .kb-notice{margin:18px 0 6px; padding:14px 18px; border-radius:12px; background:#fff8e1; border:1px solid #f3dd8a; font-size:15px;}\n.kb-page .kb-notice strong{color:#1A1A1A;}\n<\/style>\n\n<section class=\"kb-page\" id=\"kb-howto\">\n<nav class=\"kb-crumb\" aria-label=\"Breadcrumb\"><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/\">Help Center<\/a><span>\/<\/span><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/#how-to-guides\">How-To Guides<\/a><span>\/<\/span>How to upload a custom product catalog<\/nav>\n<header class=\"kb-head\"><span class=\"kb-eyebrow\">Platforms and integrations<\/span><h1>How to upload a custom product catalog<\/h1><p class=\"kb-lead\">Upload your own product file so campaigns can send your real products and links, even if your store is not in the integrations list.<\/p><div class=\"kb-meta\"><span>5 steps<\/span><span>With screenshots<\/span><span>Updated October 2026<\/span><\/div><\/header>\n<div class=\"kb-needs\"><h2>Before you start<\/h2><ul><li>A product file in CSV, Excel, XML or JSON format<\/li><li>For each product: a title, a link, and ideally an image link and a price<\/li><\/ul><\/div>\n<div class=\"kb-steps\">\n<section class=\"kb-step\" id=\"step-1\"><div class=\"kb-step-n\">1<\/div><div class=\"kb-step-b\"><h2>Prepare your file<\/h2><p>The Custom catalog card accepts a product file in <strong>CSV<\/strong>, <strong>Excel<\/strong>, <strong>XML<\/strong> or <strong>JSON<\/strong>. Use one row per product. The usual columns are the product title, its URL, an image URL and, optionally, a price. Use your real products and prices only. Never make up a price or a discount.<\/p><p>A tiny example in CSV form, with a made-up product for illustration only:<\/p><pre>title,url,image_url,price\nLinen tote bag,https:\/\/example.com\/tote,https:\/\/example.com\/tote.jpg,24.00<\/pre><p>Check that every link opens the right page and every image link loads in a browser before you upload. A broken link in the file becomes a broken link in a fan&#8217;s DM.<\/p><\/div><\/section>\n<section class=\"kb-step\" id=\"step-2\"><div class=\"kb-step-n\">2<\/div><div class=\"kb-step-b\"><h2>Open Integrations<\/h2><p>Click <strong>Integrations<\/strong> in the sidebar. The <strong>Custom catalog<\/strong> card is in the Popular tab and is tagged as a store.<\/p><figure class=\"kb-fig\"><img decoding=\"async\" src=\"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg\" alt=\"The Custom catalog card on the Integrations page, with an Upload button instead of Connect.\" loading=\"lazy\" width=\"1511\" height=\"812\"><figcaption>The Custom catalog card on the Integrations page, with an Upload button instead of Connect.<\/figcaption><\/figure><\/div><\/section>\n<section class=\"kb-step\" id=\"step-3\"><div class=\"kb-step-n\">3<\/div><div class=\"kb-step-b\"><h2>Click Upload and choose the file<\/h2><p>On the Custom catalog card click <strong>Upload<\/strong>, not Connect, because nothing is linked to an outside account. Choose the file from your computer. The upload adds those products to your DMpro catalog and does not touch your website or store.<\/p><p>The card describes the result like this: you upload a product file and then pick links in campaign DMs. So the upload is the only setup needed, and there is no account to sign in to.<\/p><\/div><\/section>\n<section class=\"kb-step\" id=\"step-4\"><div class=\"kb-step-n\">4<\/div><div class=\"kb-step-b\"><h2>Match the columns<\/h2><p>DMpro walks you through matching each column in your file to the right product field, such as title, link, image and price. Check the matches before you confirm so a price does not end up in the title field.<\/p><\/div><\/section>\n<section class=\"kb-step\" id=\"step-5\"><div class=\"kb-step-n\">5<\/div><div class=\"kb-step-b\"><h2>Use the products in a campaign<\/h2><p>In the campaign builder, add a card step and pick products from your uploaded catalog, or pick a catalog row as the source for a tracked link. The card step lets you attach your own image and link for each product. The Meta shop product step is different: it only sends products from a connected Meta shop catalog.<\/p><\/div><\/section>\n<\/div>\n<div class=\"kb-box\"><h2>Tips<\/h2><ul><li>Keep your original file. If a link or price changes, you will want to fix it at the source.<\/li><li>Use short, clear titles. They appear on the product card your fans see.<\/li><li>If you use the AI Assistant (MCP) connector, an assistant with <strong>Can see and build catalogs<\/strong> access can build an uploaded catalog from products you give it. It never changes a connected store.<\/li><\/ul><\/div>\n<div class=\"kb-box\"><h2>If something goes wrong<\/h2><details class=\"kb-prob\"><summary>My file will not upload.<\/summary><div><p>Check the file type. The card accepts CSV, Excel, XML and JSON. Save the file again in one of those formats and try again.<\/p><\/div><\/details><details class=\"kb-prob\"><summary>A product is missing from the picker.<\/summary><div><p>Check that the row has a title and a link, and that the columns were matched correctly during upload. Fix the file and upload it again.<\/p><\/div><\/details><details class=\"kb-prob\"><summary>My Send products step is empty.<\/summary><div><p>That step reads your Meta shop catalog. For products from an uploaded catalog use a card step with the product&#8217;s own image and link.<\/p><\/div><\/details><\/div>\n<div class=\"kb-box\"><h2>Related how-to guides<\/h2><ul class=\"kb-cards\"><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-connect-a-store\/\">How to connect a store or tool in Integrations<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-track-store-revenue\/\">How to track store revenue from your automations<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-start-a-campaign-from-a-template\/\">How to start a campaign from a template<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-build-a-multi-step-flow\/\">How to build a multi-step campaign flow<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-choose-what-assistants-can-touch\/\">How to choose what AI assistants can touch<\/a><\/li><\/ul><\/div>\n<div class=\"kb-related\"><h2>Help Center articles<\/h2><ul><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/templates-integrations\/\">Templates &amp; Integrations &rarr;<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/affiliate-ai\/\">Affiliate Tracking &amp; AI Response &rarr;<\/a><\/li><li><a href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/store-revenue\/\">Store Revenue &amp; Sales Analytics &rarr;<\/a><\/li><\/ul><\/div>\n<div class=\"kb-cta\">\n<h3>Still stuck? We&#8217;re happy to help.<\/h3>\n<p>Create your DMpro account, see pricing, or reach out to support directly.<\/p>\n<div class=\"kb-cta-btns\">\n<a class=\"kb-btn kb-btn-coral\" href=\"https:\/\/dmpro.brandid.app\/signin\">\n<svg fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewbox=\"0 0 24 24\"><path d=\"M5 12h14M12 5l7 7-7 7\"><\/path><\/svg>Create Free Account<\/a>\n<a class=\"kb-btn kb-btn-ghost\" href=\"https:\/\/dmpro.brandid.app\/\">\n<svg fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewbox=\"0 0 24 24\"><rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"4\"><\/rect><path d=\"M3 10h18\"><\/path><\/svg>See Plans<\/a>\n<a class=\"kb-btn kb-btn-ghost\" href=\"https:\/\/brandid.app\/contact-us\/\">\n<svg fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewbox=\"0 0 24 24\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"><\/path><\/svg>Contact Support<\/a>\n<\/div>\n<\/div>\n\n<a class=\"kb-back\" href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/#how-to-guides\"><svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"m15 18-6-6 6-6\"\/><\/svg>All how-to guides<\/a>\n<\/section>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"HowTo\", \"name\": \"How to upload a custom product catalog\", \"description\": \"Upload your own product file so campaigns can send your real products and links, even if your store is not in the integrations list.\", \"step\": [{\"@type\": \"HowToStep\", \"position\": 1, \"name\": \"Prepare your file\", \"text\": \"The Custom catalog card accepts a product file in CSV , Excel , XML or JSON . Use one row per product. The usual columns are the product title, its URL, an image URL and, optionally, a price. Use your real products and prices only. Never make up a price or a discount. A tiny example in CSV form, with a made-up product for illustration only: title,url,image_url,price Linen tote bag,https:\/\/example.com\/tote,https:\/\/example.com\/tote.jpg,24.00 Check that every link opens the right page and every image link loads in a browser before you upload. A broken link in the file becomes a broken link in a fan's DM.\", \"url\": \"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#step-1\"}, {\"@type\": \"HowToStep\", \"position\": 2, \"name\": \"Open Integrations\", \"text\": \"Click Integrations in the sidebar. The Custom catalog card is in the Popular tab and is tagged as a store.\", \"url\": \"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#step-2\", \"image\": \"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg\"}, {\"@type\": \"HowToStep\", \"position\": 3, \"name\": \"Click Upload and choose the file\", \"text\": \"On the Custom catalog card click Upload , not Connect, because nothing is linked to an outside account. Choose the file from your computer. The upload adds those products to your DMpro catalog and does not touch your website or store. The card describes the result like this: you upload a product file and then pick links in campaign DMs. So the upload is the only setup needed, and there is no account to sign in to.\", \"url\": \"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#step-3\"}, {\"@type\": \"HowToStep\", \"position\": 4, \"name\": \"Match the columns\", \"text\": \"DMpro walks you through matching each column in your file to the right product field, such as title, link, image and price. Check the matches before you confirm so a price does not end up in the title field.\", \"url\": \"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#step-4\"}, {\"@type\": \"HowToStep\", \"position\": 5, \"name\": \"Use the products in a campaign\", \"text\": \"In the campaign builder, add a card step and pick products from your uploaded catalog, or pick a catalog row as the source for a tracked link. The card step lets you attach your own image and link for each product. The Meta shop product step is different: it only sends products from a connected Meta shop catalog.\", \"url\": \"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#step-5\"}]}<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Upload a CSV, Excel, XML or JSON product file as a custom catalog in DMpro so your campaigns can send real products and links in DMs.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":585,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-588","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to upload a custom product catalog - DMpro Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to upload a custom product catalog - DMpro Blog\" \/>\n<meta property=\"og:description\" content=\"Upload a CSV, Excel, XML or JSON product file as a custom catalog in DMpro so your campaigns can send real products and links in DMs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/\" \/>\n<meta property=\"og:site_name\" content=\"DMpro Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/\",\"url\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/\",\"name\":\"How to upload a custom product catalog - DMpro Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/dmpro-kb-dm-integrations.jpg\",\"datePublished\":\"2026-11-07T15:47:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/#primaryimage\",\"url\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/dmpro-kb-dm-integrations.jpg\",\"contentUrl\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/dmpro-kb-dm-integrations.jpg\",\"width\":1511,\"height\":812},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/how-to-upload-a-custom-catalog\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DMpro Help Center\",\"item\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/dmpro-knowledge-base\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to upload a custom product catalog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/\",\"name\":\"DMpro Blog\",\"description\":\"DM automation playbooks for Instagram, TikTok, WhatsApp, Telegram, Messenger and LinkedIn\",\"publisher\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#organization\",\"name\":\"DMpro\",\"url\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dmpro-icon-512.png\",\"contentUrl\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dmpro-icon-512.png\",\"width\":512,\"height\":512,\"caption\":\"DMpro\"},\"image\":{\"@id\":\"https:\\\/\\\/dmpro.brandid.app\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/brandid.creators\\\/\",\"https:\\\/\\\/brandid.app\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to upload a custom product catalog - DMpro Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/","og_locale":"en_US","og_type":"article","og_title":"How to upload a custom product catalog - DMpro Blog","og_description":"Upload a CSV, Excel, XML or JSON product file as a custom catalog in DMpro so your campaigns can send real products and links in DMs.","og_url":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/","og_site_name":"DMpro Blog","og_image":[{"url":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/","url":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/","name":"How to upload a custom product catalog - DMpro Blog","isPartOf":{"@id":"https:\/\/dmpro.brandid.app\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#primaryimage"},"image":{"@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#primaryimage"},"thumbnailUrl":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg","datePublished":"2026-11-07T15:47:30+00:00","breadcrumb":{"@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#primaryimage","url":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg","contentUrl":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/11\/dmpro-kb-dm-integrations.jpg","width":1511,"height":812},{"@type":"BreadcrumbList","@id":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/how-to-upload-a-custom-catalog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dmpro.brandid.app\/blog\/"},{"@type":"ListItem","position":2,"name":"DMpro Help Center","item":"https:\/\/dmpro.brandid.app\/blog\/dmpro-knowledge-base\/"},{"@type":"ListItem","position":3,"name":"How to upload a custom product catalog"}]},{"@type":"WebSite","@id":"https:\/\/dmpro.brandid.app\/blog\/#website","url":"https:\/\/dmpro.brandid.app\/blog\/","name":"DMpro Blog","description":"DM automation playbooks for Instagram, TikTok, WhatsApp, Telegram, Messenger and LinkedIn","publisher":{"@id":"https:\/\/dmpro.brandid.app\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dmpro.brandid.app\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dmpro.brandid.app\/blog\/#organization","name":"DMpro","url":"https:\/\/dmpro.brandid.app\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dmpro.brandid.app\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/09\/dmpro-icon-512.png","contentUrl":"https:\/\/dmpro.brandid.app\/blog\/wp-content\/uploads\/2026\/09\/dmpro-icon-512.png","width":512,"height":512,"caption":"DMpro"},"image":{"@id":"https:\/\/dmpro.brandid.app\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/brandid.creators\/","https:\/\/brandid.app\/"]}]}},"_links":{"self":[{"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/pages\/588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/comments?post=588"}],"version-history":[{"count":0,"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/pages\/588\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/pages\/585"}],"wp:attachment":[{"href":"https:\/\/dmpro.brandid.app\/blog\/wp-json\/wp\/v2\/media?parent=588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}