Yeni — yapay zekâ telefon temsilciniz 3 dakikada yayında
İşletmeniz her aramayı yanıtlar — yapay zekâ ile
İşletmeniz için 3 dakikada tıkla-ara yapay zekâ sayfası oluşturun. Müşterileriniz bir bağlantıya dokunur ve konuşmaya başlar. Siz dökümü, özeti ve geri aramayı alırsınız.
YZ dakikaları dahil her ay · Telefon numarası gerekmez · İstediğiniz an iptal edin
İşletmeniz
Sorunuz mu var? Dokunun ve konuşun.
Asistanımız anında yanıt verir — fiyatlar, uygunluk, randevular ve daha fazlası.
Canlı arama — 02:14
Arayan “Bu perşembe için boş yeriniz var mı?”
Asistan “Evet! 10:30 AM ve 2:00 PM uygun. Hangisi size uyar?”
Konuşmak için dokunun
Sayfanızın yapabildiği her şey — ilk ekrandan itibaren
Yapay zekâ sesli aramalar, 24/7
Müşteriler bağlantınıza dokunur ve tarayıcılarında konuşur — telefon numarası yok, uygulama yok, hatta beklemek yok. Yapay zekâ sesli temsilciniz gece gündüz anında yanıt verir.
Randevuları aramanın içinde oluşturur
Konuşmanın ortasında temsilciniz gerçek uygun saatleri sunar ve randevuyu aramanın içinde oluşturur — ardından hatırlatmalar ve onaylar kendiliğinden takip eder.
Arama sırasında açık kalan bir mağaza
Ürünleriniz ve koleksiyonlarınız — her koleksiyonun kendi bağlantısı vardır — arama sırasında mağazada gezilebilir kalır; temsilci, müşterinin o an baktığı ürün hakkında gerçek zamanlı tavsiye verir.
Ürünlerinizi ezbere bilir
Temsilciniz, kendi kataloğunuzdan tam fiyat ve ayrıntıları söyler ve doğru ürünü önerir — asla fiyat uydurmaz.
Her arama, kaydedilmiş ve aranabilir
Her konuşma için dökümler, özetler ve analizler tek bir Aktivite akışında — herhangi bir aramayı arayanın adına, numarasına veya söylenen herhangi bir şeye göre bulun.
İlk merhabadan itibaren çok dilli
Bu web sitesi 24 dil konuşuyor, sayfanız da konuşabilir: küçük bir bayrak dokunuşu dili değiştirir, böylece her ziyaretçi kendi dilinde karşılanır.
Geleceğe giden yol
İş aramaları nereye gidiyor
Her işletme, yanıtlayamadığı aramaları kaybederdi. Sonra telefon bir bağlantıya dönüştü. Şimdi bağlantı konuşuyor — ve satış yapıyor.
Dün — kaçan arama
Bir müşteri mesai saatleri dışında arar, telefonun cevapsız çaldığını duyar ve ilk yanıt veren kimden alışveriş yapar. İşletme, olan bitenden bile haberdar olmaz.
Bugün — yanıt veren sayfa
CallPage sayfanız anında, 24/7 yanıt verir: konuşur, gerçek fiyatlarınızı söyler, randevuyu aramanın içinde oluşturur ve size dökümü ile özeti bırakır.
Yarın — işletmeyi büyüten temsilci
Aynı temsilci takip eder, onaylar, hatırlatır ve kataloğunuzu ezbere öğrenir — müşterilerinizin dilinde, hiç uyumayan bir resepsiyon.
Canlı demo
● CANLI DEMO
Bize inanmayın — biriyle konuşun
Bu, tam bu sayfada yayında olan gerçek bir CallPage: Porto Riko'da ev sahiplerine danışmanlık veren Mi Junta. Yardımcısıyla sohbet edin ya da arama düğmesine dokunup konuşun — önce temsilci konuşur, siz sadece dinleyebilirsiniz: başlamak için mikrofon asla gerekmez.
Appointments belong to CallPages: booking works on every page, Google Calendar only syncs
CallPages' own appointment system is now the system of record on every page: booking is on by default everywhere, and a Google Calendar is only a sync target — never a gate.
Bookmark the editor: deep links into your page, and a light My Pages landing
Every editor tab in the CallPages dashboard now has its own bookmarkable link that survives sign-in, and the dashboard opens on the light My Pages list instead of the heavy Activity feed.
The friendly website editor: edit your site exactly as your visitors see it
The Website Studio's block editor is now fully visual: blocks render as the published page itself, you click any block to edit it in place, and a + divider between blocks opens a six-type picker — no Markdown, no guessing.
Collections get their own URLs — and their own place in search
Every collection on a CallPages page now lives at its own address — /p/<page>/c/<collection> — with its own title, description, canonical URL, structured data, and a spot in the page sitemap.
During a CallPages call, customers can tap any product and keep browsing the store — inside the call. The voice agent sees what they're looking at in real time and advises on the item in front of them.
Booked appointments now manage themselves: a reminder two hours before, confirmation required one hour before, and a private manage page per appointment where the customer can confirm, cancel, or reschedule.
Callbacks and appointments moved in: Activity holds everything now
The dashboard shed two tabs. Callbacks and Appointments/Calendar now live inside Activity at full power — the callback queue, the calendar, Google Calendar — behind the chips you already use.
One Store tab: collections and products, edited together
The Store tab now holds everything: collections on top, products edited right inside them, reorder by drag or arrows — and every change autosaves. No second editor, no Save button.
Website Studio: build your whole site from your phone
Every page now has a Website Studio: create your site's pages from templates, edit them block by block, add photos, preview drafts privately, publish when ready — right in the dashboard.
A dashboard header that holds only your account. The dashboard's top bar was de-cluttered: feature shortcuts moved into their own tabs where they belong, and the top-right now holds a single account menu. As a bonus, the plan pill finally tells the truth about your plan. Learn more
Guide agents now know every member of their guide. A city guide's voice agent now carries a complete digest of every member business — names, areas, categories, signature items with real prices, hours and phones — and never claims not to know a business its own guide lists. Learn more
Product pages now answer themselves in Google AI Mode. Every product page can end with a questions section — real questions about that product, each one a tap away from asking Google AI Mode, which answers from the product's own published facts. Learn more
Delete that actually deletes — and a Hide that keeps selling. Deleting a product in the dashboard now removes it for real, the moment you tap. And a new Hide turns the product's page into an honest 'Agotado' with similar products instead of a dead end. Learn more
The CallPages admin console now shows page owners and consumer accounts side by side, lets an admin step into any account to help, and edit any page's settings.
Booking an appointment now happens inside a live call, with the voice agent, in the middle of the conversation it belongs to. The public booking form — and the spam it invited — is gone.
Every error on CallPages — a mistyped address, a paused page, a product that moved — now renders as one branded page that explains what happened and shows the way forward.
A CallPages shop now carries a collection tab bar: each collection sits in a sticky row with its product count, and tapping jumps straight to it — same page, all products, no reloads.
A CallPages page can now live on the business's own domain — the address on its signs, cards, and receipts — with the call, the store, and the agent answering there unchanged.
The CallPages home page has been rebuilt: a hero that shows a live AI call on a phone, and the product's real features integrated into the first screen instead of listed somewhere below.
The Silent Magic Helper is now on by default for every CallPages page — existing and new — and its chat sessions are logged as calls, right beside the voice ones.
Every CallPages page now has its own email address — <page>@callpages.me — and new pages greet their owners with a welcome email. A page is reachable by call, by web, and by mail.
A payment on CallPages now sets its own follow-through in motion: confirmations and next steps happen on their own, and the owner watches it all land in Activity.
The questions on a product page are now written from that product itself — its name, its photo, its description — so a consulting session gets consulting questions and a bed frame gets frame questions.
Pages and products now carry a proper share row — X, Facebook, WhatsApp, LinkedIn, Telegram, and copy-link — so anything worth finding is one tap from being passed on.
Pages and websites get a new design generation, WOW Design v2, and page styles are now versioned: when a look changes, the old one is kept, not overwritten.
Hayır. CallPages telefon hattınızı hiç kullanmaz. Müşterileriniz sayfa bağlantınızı tarayıcılarında açar ve doğrudan konuşur — telefon görüşmesi gibidir, ama web üzerinde gerçekleşir. Herhangi bir telefon numarası satın almanıza, taşımanıza veya yönetmenize gerek yoktur.
Yapay zekâ hangi dilleri konuşuyor?
Bu web sitesi 24 dilde yayımlanıyor — üstteki bir bayrağa dokunun, her şey değişsin. Sayfanız, onun için seçtiğiniz dillerde konuşur: yapay zekâ arayanları karşılar ve tüm konuşmayı o dilde sürdürür; bir sayfa aynı anda birkaç dilde çalışabilir.
Aramalar gerçekte nasıl çalışıyor?
Sayfa bağlantınızı her yerde paylaşırsınız — web sitenizde, Google İşletme profilinizde, faturalarınızda, sosyal medyada. Müşteriniz bağlantıya dokunur, arama düğmesine dokunur ve tarayıcısında konuşmaya başlar. Yapay zekâ anında, 24/7 yanıt verir. Aramadan sonra, panelinizde tam dökümü ve kısa bir özeti alırsınız.
YZ dakikası olarak ne sayılır?
Bir YZ dakikası, yapay zekânızla yapılan canlı konuşmanın bir dakikasıdır. Her sayfa, canlı konuşmalar için YZ dakikaları içerir — çoğu küçük işletme adil kullanım sınırına hiç yaklaşmaz.
İstediğim an iptal edebilir miyim?
Evet. Sözleşme ve iptal ücreti yoktur. Aboneliğinizi panelinizden tek tıkla yönetin; sayfalarınız fatura döneminin sonuna kadar aktif kalır.
CallPages'i paylaşın
Sürekli arama kaçıran bir işletme tanıyor musunuz? Onlara iletin.
Paylaş
/* public/theme-switcher.js — LANE 4 top-fixed theme switcher (Vasily, 2026-10-23).
*
* A floating pill, always visible at the very top of the page, with three
* segments: Lame White / Current / Acid. Zero friction, unlimited changes.
* - Instant: swaps + localStorage("cp-theme") immediately.
* - Owner mode (dashboard, data-theme-mode="owner"): also persists to the
* account in D1 via POST /api/owner/theme (fire-and-forget; the UI
* never waits for the network).
* - Visitor mode (public pages, data-theme-mode="visitor"): local only —
* the visitor plays with themes without affecting anyone.
*
* Inlined into dashboard/dialer/landing/my-callpage by build.js at the
* theme-switcher placeholder (plain script, no modules, no deps).
* Unit-tested in node with stubbed DOM (src/theme-switcher.test.js).
*/
(function () {
"use strict";
var THEMES = [
{ id: "lame-white", label: "Lame White" },
{ id: "current", label: "Current" },
{ id: "acid-v1", label: "Acid" },
];
var KEY = "cp-theme";
var MOUNT_ID = "cpThemeSwitcher";
function norm(v) {
if (v === "lame-white" || v === "current" || v === "acid-v1") return v;
if (v === "dark") return "current"; // legacy migration
if (v === "light") return "lame-white"; // legacy migration
return null;
}
function getMode(doc) {
var m = doc.documentElement.getAttribute("data-theme-mode");
return m === "owner" ? "owner" : "visitor";
}
function currentTheme(doc, ls) {
var t = null;
try {
t = norm(ls.getItem(KEY));
} catch (e) {}
if (!t) t = norm(doc.documentElement.getAttribute("data-theme"));
return t || "current";
}
function applyTheme(id, doc, ls) {
id = norm(id) || "current";
doc.documentElement.setAttribute("data-theme", id);
try {
ls.setItem(KEY, id);
} catch (e) {}
return id;
}
function persistOwnerTheme(id, fetchFn) {
// Fire-and-forget: the UI already applied instantly; a failed save
// just means the next load falls back to the previous account theme.
try {
var p = fetchFn("/api/owner/theme", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ theme: id }),
});
if (p && typeof p.catch === "function") p.catch(function () {});
} catch (e) {}
}
function setTheme(id, doc, ls, fetchFn) {
id = applyTheme(id, doc, ls);
if (getMode(doc) === "owner" && typeof fetchFn === "function") {
persistOwnerTheme(id, fetchFn);
}
syncPill(doc, id);
return id;
}
function syncPill(doc, activeId) {
var pill = doc.getElementById(MOUNT_ID);
if (!pill) return;
var btns = pill.querySelectorAll
? pill.querySelectorAll("button[data-theme-id]")
: [];
for (var i = 0; i < btns.length; i++) {
var b = btns[i];
var on = b.getAttribute("data-theme-id") === activeId;
b.setAttribute("aria-pressed", on ? "true" : "false");
}
}
function render(doc, ls, fetchFn) {
var mount = doc.getElementById(MOUNT_ID);
if (!mount) {
mount = doc.createElement("div");
mount.id = MOUNT_ID;
(doc.body || doc.documentElement).appendChild(mount);
}
// Rebuild idempotently.
while (mount.firstChild) mount.removeChild(mount.firstChild);
var pill = doc.createElement("div");
pill.className = "cp-theme-switcher";
pill.setAttribute("role", "group");
pill.setAttribute("aria-label", "Theme");
var label = doc.createElement("span");
label.className = "cp-ts-label";
label.setAttribute("title", "Prueba los temas — cambia el look al instante");
label.textContent = "🎨 Temas";
pill.appendChild(label);
THEMES.forEach(function (t) {
var b = doc.createElement("button");
b.type = "button";
b.setAttribute("data-theme-id", t.id);
b.setAttribute("aria-pressed", "false");
b.title = t.label;
b.textContent = t.label;
b.addEventListener("click", function () {
setTheme(t.id, doc, ls, fetchFn);
});
pill.appendChild(b);
});
mount.appendChild(pill);
syncPill(doc, currentTheme(doc, ls));
}
function init(doc, ls, fetchFn) {
render(doc, ls, fetchFn);
}
var api = {
THEMES: THEMES,
KEY: KEY,
MOUNT_ID: MOUNT_ID,
norm: norm,
getMode: getMode,
currentTheme: currentTheme,
applyTheme: applyTheme,
setTheme: setTheme,
syncPill: syncPill,
render: render,
init: init,
};
// Safe storage: localStorage throws on opaque origins (file://, about:blank
// in tests) — fall back to an in-memory shim so the pill always renders.
function safeStorage(win) {
try {
var ls = win.localStorage;
ls.getItem("__cp_probe__");
return ls;
} catch (e) {
var mem = {};
return {
getItem: function (k) { return Object.prototype.hasOwnProperty.call(mem, k) ? mem[k] : null; },
setItem: function (k, v) { mem[k] = String(v); },
removeItem: function (k) { delete mem[k]; },
};
}
}
// Browser: auto-mount (the early script already set data-theme).
if (typeof document !== "undefined" && typeof window !== "undefined") {
var boot = function () {
try {
init(document, safeStorage(window), window.fetch.bind(window));
} catch (e) {}
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", boot);
} else {
boot();
}
window.cpSetThemeId = function (id) {
return setTheme(id, document, safeStorage(window), window.fetch.bind(window));
};
window.cpThemeSwitcher = api;
}
// node (unit tests).
if (typeof module !== "undefined" && module.exports) {
module.exports = api;
}
})();