✝ Free for Churches
Sermon Outline Generator
Loading...
Pick a theme, enter a verse, and get a complete sermon outline — with illustrations, scripture references, and social media hooks — in seconds.
1. Choose a Theme
🙏 Faith
🌅 Hope
❤️ Love
🕊️ Forgiveness
🌿 Gratitude
⚔️ Courage
🤝 Service
🏠 Family
✨ Prayer
📖 Wisdom
2. Customize Your Sermon
Audience
General Congregation
Youth
Women's Ministry
Men's Ministry
Senior Adults
✨ Generate My Sermon Outline
Sermon Titles (choose one)
📱 Social Media Hooks
Use these to promote your sermon on Facebook, WhatsApp, and Instagram.
Need help with church communications? Email newsletters, social media content, event announcements — NOETRON.ai has free tools built for ministry leaders.
More Free Church Tools at NOETRON.ai →
Copied to clipboard!
We use cookies for analytics. By using this tool, you agree to our Privacy Policy .
Accept
AI-generated content. Results are for informational purposes only and should not be considered professional advice. Always verify important decisions with a qualified professional. NOETRON.ai
*
* TRIGGER (call this after your results are shown):
* NoetronFeedback.trigger('your-tool-name');
*
* TOOL NAME OVERRIDE (optional — set before the script runs):
*
*
*
* AUTO-TRIGGER:
* The widget also listens for a custom event you can fire anywhere:
* document.dispatchEvent(new CustomEvent('noetron:result_viewed', { detail: { tool_name: 'my-tool' } }));
*
* PostHog events emitted:
* - feedback_submitted { rating, feedback_text, tool_name }
* - share_clicked { platform, tool_name }
* - feature_request { request_text, tool_name }
* - email_captured { email, source: 'feedback_flow', tool_name }
* - feedback_widget_dismissed { step, tool_name }
*/
(function () {
'use strict';
// ── CONFIG ──────────────────────────────────────────────────────────────────
var PH_KEY = 'phc_KNSY44h9aRfz00hX5nWW2sRhy3katBcpSEDLEYQDyO6';
var PH_HOST = 'https://app.posthog.com';
var DELAY_MS = 3000; // 3 seconds after trigger
var LS_KEY = 'noetron_feedback_done';
// ── POSTHOG BOOTSTRAP (safe — skips if already loaded) ────────────────────
function initPostHog() {
if (typeof posthog !== 'undefined' && posthog.__SV) return;
/* eslint-disable */
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+" (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onSessionId".split(" "),n=0;n /g, '>')
.replace(/"/g, '"');
}
function getToolName(override) {
return override || window.NOETRON_TOOL_NAME ||
(document.title || 'unknown').replace(/[^a-z0-9-]/gi, '-').toLowerCase().slice(0, 40);
}
function getPageUrl() {
return window.location.href.split('?')[0];
}
function alreadyDone() {
try { return !!sessionStorage.getItem(LS_KEY); } catch (e) { return false; }
}
function markDone() {
try { sessionStorage.setItem(LS_KEY, '1'); } catch (e) {}
}
// ── STYLES ──────────────────────────────────────────────────────────────────
function injectStyles() {
if (document.getElementById('nfb-styles')) return;
var style = document.createElement('style');
style.id = 'nfb-styles';
style.textContent = [
'/* NOETRON Feedback Widget */',
'#nfb-overlay{',
' position:fixed;inset:0;z-index:9999;',
' display:flex;align-items:center;justify-content:center;',
' background:rgba(0,0,0,0.55);backdrop-filter:blur(3px);',
' padding:16px;',
' opacity:0;transition:opacity 0.25s ease;',
'}',
'#nfb-overlay.nfb-visible{opacity:1;}',
'#nfb-modal{',
' background:#0F1621;',
' border:1px solid rgba(91,140,255,0.22);',
' border-radius:16px;',
' padding:28px 28px 24px;',
' width:100%;max-width:440px;',
' position:relative;',
' box-shadow:0 24px 64px rgba(0,0,0,0.6);',
' font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;',
' color:#E6EDF6;',
' transform:translateY(12px);',
' transition:transform 0.25s ease;',
'}',
'#nfb-overlay.nfb-visible #nfb-modal{transform:translateY(0);}',
/* close button */
'#nfb-close{',
' position:absolute;top:14px;right:16px;',
' background:none;border:none;cursor:pointer;',
' color:#8888aa;font-size:20px;line-height:1;',
' padding:4px 6px;border-radius:6px;',
' transition:color 0.15s,background 0.15s;',
'}',
'#nfb-close:hover{color:#E6EDF6;background:rgba(255,255,255,0.07);}',
/* headline */
'.nfb-headline{font-size:15px;font-weight:600;line-height:1.5;margin-bottom:18px;padding-right:24px;}',
'.nfb-sub{font-size:13px;color:#8888aa;margin-top:4px;font-weight:400;}',
/* rating buttons */
'.nfb-ratings{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;}',
'.nfb-rating-btn{',
' flex:1;min-width:90px;',
' padding:10px 12px;',
' background:rgba(91,140,255,0.08);',
' border:1px solid rgba(91,140,255,0.2);',
' border-radius:10px;',
' color:#E6EDF6;font-size:13px;font-weight:500;',
' cursor:pointer;text-align:center;',
' transition:background 0.15s,border-color 0.15s,transform 0.1s;',
'}',
'.nfb-rating-btn:hover{background:rgba(91,140,255,0.18);border-color:rgba(91,140,255,0.5);transform:translateY(-1px);}',
'.nfb-rating-btn.nfb-selected{background:rgba(91,140,255,0.25);border-color:#5B8CFF;color:#7AA3FF;}',
/* textarea */
'.nfb-textarea{',
' width:100%;box-sizing:border-box;',
' background:#0B0F14;',
' border:1px solid rgba(91,140,255,0.2);',
' border-radius:10px;',
' padding:12px 14px;',
' color:#E6EDF6;font-size:13px;font-family:inherit;',
' resize:none;outline:none;',
' transition:border-color 0.15s;',
' margin-top:14px;',
'}',
'.nfb-textarea:focus{border-color:#5B8CFF;}',
'.nfb-textarea::placeholder{color:#8888aa;}',
/* input */
'.nfb-input{',
' width:100%;box-sizing:border-box;',
' background:#0B0F14;',
' border:1px solid rgba(91,140,255,0.2);',
' border-radius:10px;',
' padding:11px 14px;',
' color:#E6EDF6;font-size:13px;font-family:inherit;',
' outline:none;',
' transition:border-color 0.15s;',
' margin-top:10px;',
'}',
'.nfb-input:focus{border-color:#5B8CFF;}',
'.nfb-input::placeholder{color:#8888aa;}',
/* primary CTA */
'.nfb-btn{',
' width:100%;margin-top:16px;',
' padding:12px 16px;',
' background:#5B8CFF;',
' border:none;border-radius:10px;',
' color:#fff;font-size:14px;font-weight:600;',
' cursor:pointer;',
' transition:background 0.15s,transform 0.1s;',
'}',
'.nfb-btn:hover{background:#3A6FFF;transform:translateY(-1px);}',
'.nfb-btn:active{transform:translateY(0);}',
'.nfb-btn:disabled{opacity:0.45;cursor:default;transform:none;}',
/* share buttons */
'.nfb-share-row{display:flex;flex-direction:column;gap:8px;margin-top:14px;}',
'.nfb-share-btn{',
' display:flex;align-items:center;gap:10px;',
' padding:11px 16px;',
' border-radius:10px;',
' border:1px solid rgba(91,140,255,0.18);',
' background:rgba(91,140,255,0.06);',
' color:#E6EDF6;font-size:13px;font-weight:500;',
' cursor:pointer;text-decoration:none;',
' transition:background 0.15s,border-color 0.15s;',
'}',
'.nfb-share-btn:hover{background:rgba(91,140,255,0.15);border-color:rgba(91,140,255,0.4);}',
'.nfb-share-btn svg{flex-shrink:0;}',
'.nfb-skip{',
' width:100%;margin-top:10px;',
' background:none;border:none;',
' color:#8888aa;font-size:12px;cursor:pointer;',
' padding:6px;',
' transition:color 0.15s;',
'}',
'.nfb-skip:hover{color:#E6EDF6;}',
/* step progress dots */
'.nfb-dots{display:flex;gap:6px;justify-content:center;margin-bottom:20px;}',
'.nfb-dot{width:6px;height:6px;border-radius:50%;background:rgba(91,140,255,0.2);transition:background 0.2s;}',
'.nfb-dot.nfb-dot-active{background:#5B8CFF;}',
'.nfb-dot.nfb-dot-done{background:rgba(91,140,255,0.45);}',
/* success */
'.nfb-success{text-align:center;padding:12px 0 4px;}',
'.nfb-success-icon{font-size:36px;margin-bottom:12px;}',
'.nfb-success-title{font-size:16px;font-weight:700;margin-bottom:8px;}',
'.nfb-success-sub{font-size:13px;color:#8888aa;line-height:1.5;}',
/* mobile: bottom sheet */
'@media(max-width:480px){',
' #nfb-overlay{align-items:flex-end;padding:0;}',
' #nfb-modal{',
' border-radius:16px 16px 0 0;',
' max-width:100%;',
' transform:translateY(40px);',
' }',
'}',
].join('\n');
document.head.appendChild(style);
}
// ── SVG ICONS ────────────────────────────────────────────────────────────────
var ICONS = {
twitter: ' ',
linkedin: ' ',
link: ' ',
};
// ── DOM BUILDER ──────────────────────────────────────────────────────────────
function buildModal() {
var overlay = document.createElement('div');
overlay.id = 'nfb-overlay';
overlay.setAttribute('role', 'dialog');
overlay.setAttribute('aria-modal', 'true');
overlay.setAttribute('aria-label', 'Feedback');
overlay.innerHTML = [
'',
].join('');
document.body.appendChild(overlay);
return overlay;
}
// ── STEP RENDERER ────────────────────────────────────────────────────────────
function setDots(active) {
for (var i = 1; i <= 4; i++) {
var dot = document.getElementById('nfb-dot-' + i);
if (!dot) continue;
dot.className = 'nfb-dot';
if (i < active) dot.classList.add('nfb-dot-done');
else if (i === active) dot.classList.add('nfb-dot-active');
}
}
var state = {};
function showStep1() {
setDots(1);
document.getElementById('nfb-body').innerHTML = [
'',
'Built this while learning AI \u2014 your honest feedback helps improve it for everyone.',
'
Quick question: Was this helpful?
',
'
',
'',
'\uD83D\uDE0D Yes, loved it ',
'\uD83D\uDE10 It was okay ',
'\uD83D\uDE15 Not really ',
'
',
].join('');
document.querySelectorAll('.nfb-rating-btn').forEach(function (btn) {
btn.addEventListener('click', function () {
document.querySelectorAll('.nfb-rating-btn').forEach(function (b) { b.classList.remove('nfb-selected'); });
btn.classList.add('nfb-selected');
state.rating = btn.getAttribute('data-rating');
setTimeout(function () { showStep2(state.rating); }, 300);
});
});
}
function showStep2(rating) {
setDots(2);
var isPositive = (rating === 'yes' || rating === 'okay');
var question = isPositive
? 'Amazing! What would make it even better?'
: 'Sorry about that! What were you hoping for?';
var placeholder = isPositive
? 'Even a tiny tweak would help\u2026'
: 'Tell me what you were looking for\u2026';
document.getElementById('nfb-body').innerHTML = [
'' + esc(question) + '
',
'',
'Submit \u2192 ',
].join('');
document.getElementById('nfb-submit-feedback').addEventListener('click', function () {
var text = (document.getElementById('nfb-feedback').value || '').trim();
state.feedback_text = text;
ph('feedback_submitted', {
rating: state.rating,
feedback_text: text,
tool_name: state.tool_name,
});
showStep3();
});
}
function showStep3() {
setDots(3);
var url = getPageUrl();
var shareUrl = url + '?ref=share';
var toolLabel = (state.tool_name || 'tool').replace(/-/g, ' ');
var twitterText = encodeURIComponent(
'Just used this ' + toolLabel + ' \u2014 actually useful. Built by an indie AI experimenter. ' + shareUrl
);
var linkedinUrl = encodeURIComponent(shareUrl);
var linkedinText = encodeURIComponent(
'Found an AI ' + toolLabel + ' that actually works. Built by someone experimenting with AI tools. Worth checking out: ' + shareUrl
);
document.getElementById('nfb-body').innerHTML = [
'',
'Thank you! If this helped, would you share it with someone who\u2019d find it useful?',
'
',
'',
'',
'
',
ICONS.linkedin,
'Share on LinkedIn ',
' ',
'
',
ICONS.link,
'Copy Link ',
' ',
'
',
'Skip \u2192 ',
].join('');
// Twitter
document.getElementById('nfb-share-twitter').addEventListener('click', function () {
ph('share_clicked', { platform: 'twitter', tool_name: state.tool_name });
setTimeout(function () { showStep4(); }, 600);
});
// LinkedIn
document.getElementById('nfb-share-linkedin').addEventListener('click', function () {
ph('share_clicked', { platform: 'linkedin', tool_name: state.tool_name });
setTimeout(function () { showStep4(); }, 600);
});
// Copy link
document.getElementById('nfb-copy-link').addEventListener('click', function () {
ph('share_clicked', { platform: 'copy_link', tool_name: state.tool_name });
navigator.clipboard.writeText(shareUrl).then(function () {
document.getElementById('nfb-copy-label').textContent = '\u2713 Copied!';
setTimeout(function () {
document.getElementById('nfb-copy-label').textContent = 'Copy Link';
}, 2000);
}).catch(function () {
// fallback for older browsers
var ta = document.createElement('textarea');
ta.value = shareUrl;
ta.style.position = 'fixed';
ta.style.left = '-9999px';
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
document.getElementById('nfb-copy-label').textContent = '\u2713 Copied!';
setTimeout(function () {
document.getElementById('nfb-copy-label').textContent = 'Copy Link';
}, 2000);
});
setTimeout(function () { showStep4(); }, 1200);
});
// Skip
document.getElementById('nfb-skip-share').addEventListener('click', function () {
ph('share_clicked', { platform: 'skipped', tool_name: state.tool_name });
showStep4();
});
}
function showStep4() {
setDots(4);
document.getElementById('nfb-body').innerHTML = [
'',
'One more thing \u2014 what AI tool or use case would be most helpful to you?',
'
',
'',
'Quick vibe check \u2014 which look do you prefer?
',
'',
' ',
'Done \u2192 ',
].join('');
// Theme swatch click handlers
document.querySelectorAll('.nfb-swatch').forEach(function(swatch) {
swatch.addEventListener('click', function() {
document.querySelectorAll('.nfb-swatch').forEach(function(s) { s.classList.remove('nfb-selected'); s.style.borderColor = '#333'; });
this.classList.add('nfb-selected');
this.style.borderColor = '#5B8CFF';
});
});
document.getElementById('nfb-submit-final').addEventListener('click', function () {
var request = (document.getElementById('nfb-request').value || '').trim();
var email = (document.getElementById('nfb-email').value || '').trim();
var btn = document.getElementById('nfb-submit-final');
btn.disabled = true;
// Capture theme preference if selected
var selectedTheme = document.querySelector('.nfb-swatch.nfb-selected');
if (selectedTheme) {
ph('theme_preference', { theme: selectedTheme.dataset.theme, tool_name: state.tool_name });
}
if (request) {
ph('feature_request', { request_text: request, tool_name: state.tool_name });
}
if (email) {
ph('email_captured', { email: email, source: 'feedback_flow', tool_name: state.tool_name });
if (typeof posthog !== 'undefined') {
posthog.identify(email, { email: email });
}
}
showSuccess();
});
}
function showSuccess() {
setDots(5); // all dots done
// Mark all dots done
for (var i = 1; i <= 4; i++) {
var dot = document.getElementById('nfb-dot-' + i);
if (dot) { dot.className = 'nfb-dot nfb-dot-done'; }
}
document.getElementById('nfb-body').innerHTML = [
'',
'
\uD83D\uDE4F
',
'
Thank you so much!
',
'
',
'Every piece of feedback helps me build better tools. ',
'This is what keeps indie building alive.',
'
',
'
',
].join('');
markDone();
setTimeout(function () { close(); }, 2800);
}
// ── OPEN / CLOSE ─────────────────────────────────────────────────────────────
var overlayEl = null;
function open(toolName) {
if (alreadyDone()) return;
if (overlayEl) return; // already open
state = { tool_name: getToolName(toolName) };
injectStyles();
overlayEl = buildModal();
// Close button
document.getElementById('nfb-close').addEventListener('click', function () {
ph('feedback_widget_dismissed', { step: currentStep(), tool_name: state.tool_name });
close();
});
// Click outside
overlayEl.addEventListener('click', function (e) {
if (e.target === overlayEl) {
ph('feedback_widget_dismissed', { step: currentStep(), tool_name: state.tool_name });
close();
}
});
// Escape key
document.addEventListener('keydown', escHandler);
showStep1();
// Trigger animation next frame
requestAnimationFrame(function () {
requestAnimationFrame(function () {
overlayEl.classList.add('nfb-visible');
});
});
}
function close() {
if (!overlayEl) return;
overlayEl.classList.remove('nfb-visible');
document.removeEventListener('keydown', escHandler);
var el = overlayEl;
overlayEl = null;
setTimeout(function () {
if (el && el.parentNode) { el.parentNode.removeChild(el); }
}, 280);
}
function escHandler(e) {
if (e.key === 'Escape') {
ph('feedback_widget_dismissed', { step: currentStep(), tool_name: state.tool_name });
close();
}
}
function currentStep() {
for (var i = 4; i >= 1; i--) {
var dot = document.getElementById('nfb-dot-' + i);
if (dot && dot.classList.contains('nfb-dot-active')) return i;
}
return 1;
}
// ── PUBLIC API ───────────────────────────────────────────────────────────────
function trigger(toolName) {
if (alreadyDone()) return;
initPostHog();
setTimeout(function () { open(toolName); }, DELAY_MS);
}
// Listen for the custom event
document.addEventListener('noetron:result_viewed', function (e) {
var name = (e && e.detail && e.detail.tool_name) ? e.detail.tool_name : null;
trigger(name);
});
// Expose public API
window.NoetronFeedback = {
trigger: trigger,
open: open,
close: close,
};
})();