Apology eCards
Say “I’m sorry” with free Apology ecards from Punchbowl. Our free online Apology cards have the same look of traditional paper cards but don’t require a trip to the post office or store. Browse our selection of Apology ecards, choose a design, and personalize your message. Best of all, when you send free ecards with Punchbowl, you can email or text ecards right from your phone! Send your sincere apologies with a thoughtful ecard today.
')
$('.design-studio-favorite-modal').removeClass('hidden')
}
});
// Make a request to toggle the favorite status of the package
function toggleFavorite(el) {
hasToggleFavoritesRequest = true;
var data = {
user_favorite_package: {
package_id: $(el).data('package-id'),
package_type: 'ecard'
}
}
var favoriteButton = $(el);
if (favoriteButton.hasClass('icon-heart')) {
$.ajax({
type: 'DELETE',
url: '/user/favorites',
headers: { 'X-CSRF-Token': csrfToken },
data: data,
success: function(_data) {
PBS.user.removeFavoriteEcard(data['user_favorite_package']['package_id'])
favoriteButton.addClass('icon-heart-empty');
favoriteButton.removeClass('icon-heart');
hasToggleFavoritesRequest = false;
},
error: function(_data) {
alert("Sorry, your card couldn't be removed from your favorites. Please try again.");
hasToggleFavoritesRequest = false;
}
});
} else {
$.ajax({
type: 'POST',
url: '/user/favorites',
headers: { 'X-CSRF-Token': csrfToken },
data: data,
success: function(_data) {
window.dataLayer.push({
event: 'ecard_design_favorited',
package_id: data.user_favorite_package.package_id
});
PBS.user.addFavoriteEcard(data['user_favorite_package']['package_id'])
favoriteButton.addClass('icon-heart');
favoriteButton.removeClass('icon-heart-empty');
hasToggleFavoritesRequest = false;
},
error: function(_data) {
alert("Sorry, your card couldn't be favorited. Please try again.");
hasToggleFavoritesRequest = false;
}
});
}
}
$('.design-studio-favorite-modal .close-modal').click(function() {
$('.design-studio-favorite-modal').addClass('hidden')
$('.favorite-modal-overlay').remove()
})
function setHeartsFromLocalStorage() {
setHeartsFromIds(PBS.user.favoritesData().ecard_favorite_ids)
}
function setHeartsFromIds(ecard_favorite_ids) {
_.forEach(ecard_favorite_ids, function(package_id) {
$('.is-favorite[data-package-id="' + package_id + '"]').addClass('icon-heart').removeClass('icon-heart-empty');
})
}
// Only set hearts if the user is logged in
if (PBS.current_user.registered) {
setHeartsFromLocalStorage(); // set hearts from local storage prior to making ajax request to prevent late-loading of hearts that haven't changed
$.ajax({
url: '/user/favorites',
method: 'GET',
dataType: 'json',
success: function(data) {
try {
localStorage.setItem('userFavorites', JSON.stringify(data));
setHeartsFromLocalStorage();
} catch (err) {
// if local storage could not be set due to size constraints, don't let it break the rest of the js on the page
console.log(err);
setHeartsFromIds(data.ecard_favorite_ids)
}
}
})
} else {
localStorage.removeItem('userFavorites')
}
// Track category load
window.dataLayer.push({
event: 'viewed_card_gallery_category',
category_name: 'Apology'
})
PBS.Analytics.CardTracking.impression("4e4928c93ea34b0ce7000017", {"4efb83c58b28d9714d000133":"1","4efb89aa0aab4d7fba000f39":"2","4efb87ca1a349e0b4c001471":"3","4efb86248b28d941b1000344":"4","4efb88eb74f63970ef000f5f":"5","5cafcbe024e4b35ec1002836":"6","64dd1b03d976ba5a81a1b202":"7"});
});
Save greeting cards to your favorites list!