Help centre
Ask in your own words. An answer comes right here, and someone from our team can join any time. Search our help articles, or call us on weekdays from 8:00 to 20:00.
Power cut? Call 0800 123 4567, free, day or night.
Our customer care team is here on weekdays. The search box at the top reaches the same people: ask there, and one of them can join the conversation.
Call us Monday to Friday, 8:00–20:00
0808 157 0240Email us We reply within two working days
care@porchlight.exampleAsk in the search box Answers any time, and a person can join
Ask a questionHow it works · Stand Inline
People type whole questions into help-center search anyway: why is my bill higher this month? Keyword search answers with a list of maybe-relevant articles, or with nothing at all. Here the help center's own search box answers the question itself, right under it, and someone from customer care can join the same conversation.
site="demo", Stand Chat's shared demo site. Its demo Stand-in reads the page's private prompt, but it may still decline to speak for a made-up energy supplier. With your own Site ID, your own Stand-ins answer, trained on your website.<script type="module" src="stand-inline.js"></script>
<div class="search">
<stand-inline
site="YOUR-SITE-ID"
look="field"
grow="unfold"
placeholder="Why is my bill higher this month? | My meter reading looks wrong | I'm moving house next month"
greeting="Hi! Ask me anything about your account, bills or meter. Someone from our team can join at any time."
suggestions="Why is my bill higher? | Submit a meter reading | Report a power cut"
prompt="The visitor is in Porchlight's help centre. The winter tariff started on 1 October… For anything about their own account, offer to bring in a person from customer care."
analytics-id="help-center-search">
</stand-inline>
<!-- Shown only when nobody can answer -->
<form class="fallback" role="search" action="/help/search">
<input name="q" type="search" aria-label="Search help articles">
<button>Search</button>
</form>
</div>
look="field" is a bordered box that reads like search, so it can take the place of the search box people already know. A speech bubble replaces the magnifying glass.placeholder with several questions separated by | types them out in turn. It shows what to ask, in whole sentences, and stops as soon as someone clicks into the box. With reduced motion, the first one simply stays.suggestions carry the most common questions. Your search logs already know them.greeting appears when someone clicks into the box, from whoever is about to answer.grow="unfold", the default, opens the conversation in place, under the heading. Past --si-max-height, it scrolls inside.prompt is private context for whoever answers: the tariff dates, how estimated readings work, the power cut number, and when to bring in a person. Visitors don't see it, but it's in your HTML, so keep it to public facts.form after it is the help center's plain article search, for when nobody can answer. More on that below.It takes its font and text color from the page. Porchlight scales it up with font-size, sets a few tokens, and warms up the avatar and AI badge. Until the conversation starts, the box floats like a search box:
stand-inline {
font-size: 18px;
--si-accent: #14213D;
--si-surface: #FFFFFF;
--si-line: #E6DBC3;
--si-radius: 16px;
--si-visitor-bg: #FFEDC4;
}
stand-inline::part(avatar),
stand-inline::part(badge) { background: #FFE3A0; }
stand-inline:not([data-state="conversation"])::part(composer) {
padding: .5em .5em .5em 1.1em;
box-shadow: 0 18px 40px -22px rgb(20 33 61 / .45);
}
Then the element hides itself and sets data-state="offline". A help center shouldn't lose its search box, so Porchlight keeps its plain article search right after the element and shows it with one rule. The line under the heading changes the same way, so it never promises an answer nobody can give.
.fallback { display: none; }
.search:has(stand-inline[data-state="offline"]) .fallback { display: flex; }
font-size: 16px, a size that also stops iOS from zooming in on the box.npx degit standchat/examples/stand-inline my-stand-inline