SCAYLE lets you restrict integration and OnBehalf tokens to specific IP addresses, and staging environments accept trusted IP ranges. That security only holds if your services egress from stable IPs. Route them through two fixed static EU IPs and the whitelists stick.
Works with SCAYLE Apps, Admin API integrations, ERP and PIM sync services
import { HttpsProxyAgent } from "https-proxy-agent";
// HTTPS_PROXY set in the app environment
const agent = new HttpsProxyAgent(process.env.HTTPS_PROXY);
const res = await fetch(
"https://erp.partner.example.com/stock",
{ headers: auth, // agent applied }
);
SCAYLE supports IP restrictions on developer tokens. That feature assumes you control the IPs your services call from. On managed and cloud infrastructure, you usually don't.
When you generate an integration or OnBehalf token in the SCAYLE Panel, you can pin it to specific IP ranges so a stolen key only works from your addresses. If your CI, middleware, or sync service egresses from rotating cloud IPs, there is no address to pin the token to, and the restriction never gets enabled.
Stock syncs, price imports, and order exports hit enterprise systems whose security teams restrict access by IP. A sync job calling from an unrecognized address simply does not get in.
SCAYLE staging, QA, and sandbox environments support trusted IP addresses or CIDR ranges for access. Developers on dynamic connections, CI runners, and cloud workloads keep falling outside those ranges, so either the list grows endlessly or testing moves to production credentials.
The people shipping SCAYLE integrations are commerce developers, not infrastructure engineers. Spinning up a self-managed proxy VM just to get a stable IP is the wrong use of their time.
"Whitelist these addresses, or the integration stays off."
You need an answer that is still true next quarter.
SCAYLE shop
OutboundGateway
Two fixed EU IPs
ERP / PIM / partners
Add the two fixed EU IPs to your SCAYLE token whitelists and staging ranges once. Every Admin API call, ERP sync, and PIM import then arrives from an address SCAYLE already trusts.
Shops integrating ERPs, PIMs, and fulfillment partners behind IP allowlists.
Implementation partners who need one stable egress across client projects.
Apps calling third-party services that restrict access by source address.
Retailers keeping order and customer data traffic inside the EU.
Point your integration service's outbound traffic at the proxy. Nothing in your SCAYLE shop configuration changes.
SCAYLE's developer ecosystem is JavaScript-native. Attach an https-proxy-agent to outbound calls from your App or integration service.
# .env (never commit)
HTTPS_PROXY=https://USER:PASS@eu-01.outboundgateway.com:8443
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const partner = axios.create({
httpsAgent: new HttpsProxyAgent(process.env.HTTPS_PROXY),
});
// stock sync call, now from a fixed EU IP
const { data } = await partner.get(
"https://erp.partner.example.com/stock",
{ headers: { Authorization: `Bearer ${process.env.ERP_TOKEN}` } }
);
๐ Full guide: for per-request agents and error handling, see the Node.js SSL proxy guide. For SCAYLE APIs and webhooks, see the SCAYLE documentation.
Sync scripts and middleware in Python need no code changes: requests honors HTTPS_PROXY from the environment automatically.
import requests, os
# requests reads HTTPS_PROXY from the environment
r = requests.get(
"https://erp.partner.example.com/orders",
headers={"Authorization": f"Bearer {os.environ['ERP_TOKEN']}"},
timeout=30,
)
for order in r.json()["items"]:
... # import into SCAYLE
๐ Full guide: see the Python SSL proxy guide.
Wherever your integration service runs, load the proxy from a .env file so credentials never land in the image.
docker run --rm --env-file .env my-scayle-erp-sync
SCAYLE comes out of the German e-commerce ecosystem. Your integration traffic should stay in the same jurisdiction.
Your proxy runs on infrastructure inside the European Union, so order and customer data traffic stays within EU jurisdiction.
Data handling that aligns with European privacy expectations for retail and customer data.
Traffic is not detoured through US-based servers, which keeps your compliance story simple.
Two fixed IPs give partner security teams a stable, documented answer about where requests originate.
A pair of static IPs with automatic failover. Allowlist once, keep syncing.
Node.js Apps, Python sync scripts, Docker services. One env var covers them all.
No proxy VMs to run, patch, or babysit. Commerce devs stay on commerce work.
Staging, production, and every client project can share the same allowlisted pair.
TLS passthrough. Order data and API credentials are never decrypted by the proxy.
Starting from โฌ19/month. Flexible plans for every scale. Cancel anytime.
Give your ERP, PIM, and partner integrations two fixed EU IPs today.
When you generate an integration or OnBehalf token in the SCAYLE Panel, you can define the IP ranges that token is allowed to call from. Add OutboundGateway's two fixed EU IPs to that whitelist, then set HTTPS_PROXY on the services that use the token. Every call to the SCAYLE Admin API now arrives from an allowlisted address, so even a compromised key is useless from anywhere else. If one proxy node goes down, the second IP keeps your integrations running.
Because that IP is not yours to give. SCAYLE runs your shop on its managed infrastructure, and the egress your integrations use is not something you control or can promise to a partner's security team. Routing your outbound integration calls through OutboundGateway gives you two fixed EU IPs that are documented, stable, and independent of whatever infrastructure your services run on.
Yes. Integration services for several clients can share the same two fixed EU IPs, which means one allowlist entry per partner across all projects. If a client later needs its own isolated egress identity, you can move that project to its own proxy credentials without touching the others.
We're happy to help you check whether OutboundGateway fits your SCAYLE integration setup.
Contact Our Team →