Know what changed in a portal before someone asks
Large customers push orders, complaints and documents through their own supplier portals and expect you to look. A scheduled workflow looks for you, extracts what is there and posts it to your systems.
Where this fits, and where it does not
Portal monitoring is a good fit for accounts you hold and pages that have no API. It is the wrong tool for sites that forbid automated access.
- Order and complaint inboxes
- A retailer’s supplier portal lists new purchase orders and quality complaints with deadlines. Reading that list every hour and posting it to your ticketing system removes the person whose job was refreshing the page.
- Document deliveries
- Contracts, delivery notes and audit requests appear as rows in a portal, often with a due date. Extraction turns the row into fields; your system decides who is responsible.
- Status of your own submissions
- Tenders, applications and warranty claims move through states inside somebody else’s portal. A workflow can read the state and the timestamp next to it, and only that.
- Not for public sites that object
- Browserberg is authenticated-first and does not ship stealth. If a site’s terms forbid automated access, this is not the product that gets around them.
What makes the scheduled check reliable
One firing, however long you were down
A schedule trigger recomputes its next occurrence from now. A four-hour outage produces one run, not four, so your endpoint never receives a burst of stale copies.
Extraction against a schema
You define the fields. The extraction block returns JSON that matches them, and states what it could not find instead of filling gaps with plausible text.
The login is not in the workflow
The portal credential lives in the vault and is referenced by id. A run’s output, its logs and its audit entries never contain the password.
Every firing has a record
When nothing arrived, the firing log says whether the trigger skipped, overlapped a running workflow or failed inside a block, with the block named.
Hourly check, results posted to your endpoint
import { Browserberg } from '@browserberg/sdk';
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY,
baseUrl: 'https://browserberg.com',
});
const wf = await bb.workflows.publish({
title: 'Retailer portal: open purchase orders',
blocks: [
{ blockType: 'login', label: 'Sign_in', credentialId: 'cred_retailer_portal' },
{ blockType: 'navigation', label: 'Open_orders', url: 'https://supplier.retailer.example/orders?state=open' },
{ blockType: 'extraction', label: 'Read_orders',
instruction: 'all open purchase orders: order number, article count, requested delivery date',
schema: { type: 'object', properties: { orders: { type: 'array', items: { type: 'object',
properties: { number: { type: 'string' }, articles: { type: 'integer' },
deliveryDate: { type: 'string' } } } } } } },
{ blockType: 'http_request', label: 'Notify', method: 'POST',
url: 'https://orders.internal.example/inbox', body: '{{ Read_orders_output }}' },
],
});
await bb.triggers.create(wf.workflowId, {
kind: 'schedule', name: 'Every hour, office hours',
cron: '0 7-19 * * 1-5', timezone: 'Europe/Berlin', overlap: 'skip',
});
Questions operations teams ask
How do I get only the new rows?
Post the whole extracted list and let your endpoint compare it with the last one. Deduplicating inside the browser would mean the workflow keeping state, and a workflow that keeps state is harder to reason about when a portal changes.
What if the portal session expires mid-run?
The next block fails with a message naming it, the run ends as failed, and the next firing signs in again through the login block. Persistent profiles can keep the sign-in alive between runs where the portal allows it.
Can a person look at the run while it happens?
Yes. The dashboard shows a live view of the session, and an owner can take the mouse for a moment, for example to answer an unexpected security question, and hand it back.
Is there a webhook instead of a schedule?
Yes. A webhook trigger starts the workflow when your own system calls it, signed with a secret you rotate yourself. Both kinds can point at the same workflow.
Point it at one portal this week
Five browser hours, no card. Start with the portal somebody refreshes by hand today.