help

Frequently asked questions

# jump to a section, or read top-to-bottom · email us at [email protected] if your question isn't here

Getting started

What is Feednode?
Feednode ingests your product data (URL, file upload, or Shopify soon), lets you visually map it to any of 23 ad / marketplace channel formats, and publishes a validated, CDN-served CSV/XML/TSV that refreshes on your chosen schedule. You paste that URL into the downstream channel (Meta Commerce Manager, Google Merchant Center, Bol.com, etc.) and we keep it current.
How long does setup take?
About 2 minutes from Google sign-in to a scheduled feed URL: add a source (paste URL or drop a file) → create a mapping → click ⚡ auto-map → tweak any required fields → ▶ run. The URL appears on the job detail page.
Do I need technical skills?
No — the mapping editor is visual (drag source fields onto target fields) and ⚡ auto-map handles the obvious ones automatically using a built-in alias dictionary per channel. If you can read a spreadsheet column header, you can use Feednode.

Sources

What source formats do you support?
CSV, TSV, XML, and JSON — format is auto-detected from the first ~2 KB of the feed. You can either point at a public URL (we fetch it) or upload a file directly from your computer (via a signed-URL flow — the bytes stream straight to our storage, bypassing our API layer).
What is the maximum file size?
500 MB for direct uploads, which covers catalogs up to ~500k products comfortably. URL sources have no hard cap — we stream.
Can I connect multiple sources?
Yes — 1 on Free, 5 on Starter, 10 on Growth, 25 on Pro, or talk to us about a custom plan if you need more. Each source can feed multiple channel mappings (e.g. one product catalog → Meta + Google + Pinterest at the same time), and that mapping count isn't capped.
My source URL requires authentication. Can you fetch it?
Not yet — the URL fetch is unauthenticated. Workarounds: (a) upload the file manually, (b) expose the feed at an unauthenticated URL with a hard-to-guess path, (c) wait for the Shopify connector (roadmap).

Channels

Which channels are supported?
23 at the time of writing: Meta, Google Shopping, Google Ads Remarketing, Google Ads Page Feed (DSA + PMax), Microsoft Shopping, Pinterest, TikTok, Snapchat, X, Criteo, Adform, Awin, idealo, Heureka, Skroutz, Kainos.lt, Kaina24.lt, Pigu.lt, Bol.com, Allegro, Zalando, eMAG, OTTO. CSV + XML are both first-class.
Can I target multiple channels from one source?
Yes — create one mapping per channel. Each mapping is a separate recipe from the same source into a different output format, on its own schedule.
Can I request a new channel?
Email [email protected] with the channel name + a link to its feed spec. Channel templates are ~60 LoC each; adding one takes under an hour once we have the spec.

Refresh schedules

How often can feeds refresh?
Three tiers: daily (Free), every 4 hours (Starter, €39/mo), hourly (Growth €79/mo · Pro €199/mo). Each mapping has its own schedule — you can have some daily, others hourly, in the same workspace.
Can I refresh faster than hourly?
Not today. Most downstream channels cap their own poll at every 4-24 h anyway, so hourly on our side is usually the effective ceiling. For truly real-time sync we're building a webhook-driven refresh (catalog changes trigger an immediate republish) as part of the Shopify connector.
What if nothing changed since the last refresh?
We detect that automatically — every ingest SHA-256s the normalised source bytes, and if neither the source nor your mapping has changed since the last successful run, the job exits in milliseconds. No CPU, no egress, no alert. The feed URL continues to serve the unchanged bytes.

Pricing & billing

What does Feednode cost?
Free (€0/mo) — 1 workspace, 1 source, 1k products / ingest, daily refresh, 1 seat. Starter (€39/mo) — 5 sources, 10k products, every-4h refresh, 3 team seats. Growth (€79/mo) — 10 sources, 100k products, hourly refresh, 5 team seats. Pro (€199/mo) — 25 sources, 500k products, hourly refresh, 10 seats. Billed monthly via Stripe. Cancel or change plans anytime from Settings → Plan & billing.
Is there a free trial?
During the beta we're offering the product for free — no credit card required. Once GA, the Free tier stays free (1 workspace, 1 source, daily refresh, 1k products / ingest) and paid tiers unlock more sources, seats, and faster schedules.
How do I upgrade or cancel?
From Settings → Plan & billing click any plan card. Changes take effect immediately via Stripe Customer Portal. No contract; no cancellation fee.
Do you offer annual billing / discounts?
Not yet — monthly only. If you're considering a commitment for 10+ workspaces, email [email protected].

Security & data

Where is my data stored?
Everything runs in europe-west1 (Belgium) on Google Cloud Platform — Firestore for metadata, Cloud Storage for source + output files. Transactional email via Resend in eu-west-1 (Ireland). Cloudflare edge CDN serves the feeds globally but terminates on EU infrastructure. No data ever leaves the EEA by design.
Is my feed URL private?
Yes. Every workspace gets a random 192-bit access token baked into the feed URL path: https://feeds.feednode.io/<slug>/<token>/<channel>.csv. Guessing the slug alone isn't enough — a competitor would also need the token to scrape your catalog. Token is rotatable from Settings → Feed URLs.
How do you authenticate me?
Google sign-in via Firebase Auth — no passwords stored on our side, Google handles MFA. Every API request carries a short-lived Firebase ID token (1 h TTL) verified server-side.
What about GDPR?
We act as a data processor for product-catalog data you supply. Controller details + data-processing posture are in the Privacy Policy. For production signups we execute a DPA on request.

Troubleshooting

A scheduled job failed — what do I do?
Visit the /jobs page → click the failed job. The error message usually points at a specific source row (e.g. missing required field, invalid URL). Fix the source and manually re-run, or wait for the next scheduled run to pick it up. After 10 consecutive failures we stop scheduling the mapping until you manually run it (prevents a broken source from spamming alerts).
My source is sometimes down. Will you retry?
Yes — scheduled runs retry up to 3 times automatically (Cloud Run Job's built-in retry policy). If all 3 attempts fail, the job is marked as failed and a workspace alert fires (if you've configured an email in Settings).
I updated a mapping but the feed doesn't reflect the change.
Click ▶ run in the editor to trigger an immediate run — the scheduled tier only publishes changes at its cadence (daily / 4h / hourly). The delta-skip optimisation detects config changes, so the next scheduled run WILL republish even if the source bytes didn't change.

Still stuck?

Email [email protected] with your workspace slug + a description of what you're trying to do. Typical response within a business day.