Let me take you through the event that perfectly wrapped up 2024! Perficient’s Front-End Team concluded the year with a memorable meetup filled with inspiring sessions and networking, setting the stage for an exciting 2025. We’re already excited about the next one!
The Front-End Meetup, hosted by the Front-end Meetup Group and sponsored by Perficient, began at 10:00 AM with great energy as developers, designers, and tech enthusiasts gathered. Snehal Gundewar, senior project manager and front-end practice lead, welcomed everyone and invited them to share their journeys. She introduced Prashant Nandanwar, director of Perficient Nagpur, who shared insights on front-end trends and tools and highlighted that this meetup marks the beginning of an ongoing knowledge-sharing series.
Snehal then handed over the stage to our host for the event, Rasika Senad, the lead front-end developer at Perficient. Rasika introduced the impressive lineup of speakers, and the sessions began with great energy!
The day proceeded smoothly, starting with two engaging sessions and a much-needed coffee break (because who doesn’t need caffeine to fuel the interactive quiz?) After recharging over a networking-packed lunch, we drove into two more insightful sessions. A subsequent coffee break was provided, recognizing the challenge of maintaining focus post-lunch. Our attendees demonstrated exceptional engagement through insightful questions and discussions. Each session concluded with a Q&A segment to sustain energy levels, with Rasika adding a lighthearted touch. She posed two engaging questions related to the session topics, and the winner was awarded a chocolate prize— a great way to wrap up the sessions with a little friendly competition!
Before closing the event, Snehal thanked Anurag Shivhare, General Manager of Perficient Nagpur, for his support and feedback throughout the organization process. He also appreciated the team’s efforts. Rasika thanked the organizing team on stage and Snehal, Prashant, and Anurag for their continued support in making the event a success.
The event wrapped up with the final sessions, leaving everyone energized, inspired, and ready to take on the future of web development. It was a day packed with learning, networking, and loads of fun. Can’t wait for the next one!
Click to view slideshow.I had the opportunity to attend the Front-End Meetup and let me tell you, it was nothing short of inspiring! Developers, designers, and tech enthusiasts gathered for a day filled with groundbreaking insights, hands-on demos, and networking. The event offered a deep dive into the latest trends and tools shaping the future of web development. Whether you’re a seasoned pro or a curious beginner, this meetup had something for everyone. Here’s a sneak peek at the fantastic sessions that sparked great conversations!
Our event organizers started things with a warm welcome and an outline of the day’s agenda. The focus was on fostering collaboration, innovation, and knowledge-sharing within the Perficient community and beyond. The energy in the room was infectious, setting the perfect tone for a day of learning and growth.
Asif is a senior technical consultant at Perficient with over a decade of IT experience, specializing in front-end development and creating cutting-edge web applications for exceptional user experiences.
Achievements:
Asif’s session on GitHub Copilot covered its integration with VS Code, key features, and practical use cases. He demonstrated how the AI tool assists developers by suggesting code snippets and improving productivity. He emphasized Copilot’s role as an assistant, not a replacement, and shared best practices for practical use. Additionally, he demonstrated how developers can write unit test cases more efficiently with Copilot, using its intelligent suggestions to ensure robust and reliable code.
Ram is the Director of Azlogics Private Limited in Nagpur, Maharashtra. With 10+ years in tech, he focuses on API solutions for eKYC and digital document processing, driving innovation and user experience.
Ram explored how to begin building front-end architecture, starting with manifesting ideas and visualizing the project’s journey from zero to one. He highlighted essential resources and provided a roadmap to successful architecture, concluding with a practical case study demonstrating the entire process.
A Myth or Fact quiz focused on programming languages like React, JavaScript, CSS, Angular, and more.
The quiz was a fun highlight between sessions! Each question was based on front-end technology, including questions around HTML, CSS, JavaScript, and various frameworks of JavaScript, and the top 3 participants were rewarded with gifts. They added a twist rather than the traditional hand-raising method; they introduced a more interactive and engaging format. Here’s how it worked:
Congratulations to our winners! You all nailed the questions and earned your well-deserved coffee mugs. It was fun testing everyone’s knowledge and keeping the energy high. I can’t wait for the next quiz!
Rajiv is a lead technical consultant at Perficient with 10+ Years of experience in front-end technologies, specializing in Insight and Magento 2. He is a Certified Scrum Master and Adobe Commerce JavaScript developer.
Achievements:
Rajiv’s session focused on Docker, explaining how it allows developers to package, deploy, and run applications in isolated containers, ensuring consistency across different environments. He also discussed key Docker terminology, such as images, containers, and volumes, and provided insights into Docker’s architecture, highlighting how its components work together to streamline application management and deployment.
The lunch break wasn’t just about food; it was a burst of creativity and connection. Developers from all walks of life shared stories, ideas, and the latest tech trends, making it feel like a mini think tank. The relaxed vibe made networking effortless, leaving everyone feeling inspired and more connected than ever.
Click to view slideshow.Vikas has been a lead technical consultant at Perficient for over 4.5 years. He has 12+ years of industry experience and expertise in full-stack and front-end development platforms.
Achievements:
After lunch, the spotlight shifted to Vikas, who covered monorepo architecture, discussing its benefits, like simplified code sharing and improved collaboration, and challenges, like scalability and complex CI/CD setups. He introduced Nx, a tool for managing monorepos, demonstrated its use with a React app example, and shared best practices for modularization, efficient CI/CD, and maintaining code consistency.
Sagar is a senior software developer at HCL Technologies with 8 years of experience in full-stack development and data analytics, specializing in JavaScript and Python for scalable applications in healthcare and ecommerce.
Achievements:
In his session on Micro Front-End and Server-Side Rendering, Sagar discussed the benefits and implementation of SSR, comparing it with Client-Side Rendering (CSR). He outlined SSR’s journey across various technologies like PHP, Laravel, Next.js, and Redis, focusing on performance and SEO improvements. He also delved into Micro Front-end, explaining its advantages in building scalable, modular applications and providing insights into its integration, especially in Next.js.
The excitement didn’t stop there! After the sessions, we had Quiz 2 to keep the momentum going. This round was a multiple-choice quiz focused on front-end technologies, testing participants’ knowledge of HTML, CSS, JavaScript, and various JavaScript frameworks. It was an engaging and interactive way to wrap up the event, with everyone eager to showcase what they had learned!
Quiz 2 Results:
A big congratulations to our winners! You all nailed the questions and earned your well-deserved coffee mugs. It was a fantastic way to challenge everyone’s knowledge and keep the energy high and fun!
Mohammad Waseem, a seasoned IT professional with over 8 years of experience, is a senior technical consultant at Perficient. He specializes in web development and is passionate about delivering impactful and innovative solutions.
Achievements:
In the final session, Mohammad Waseem introduced ml5.js, a JavaScript library that simplifies machine learning for developers and creators. He covered its purpose, ease of use, and how to get started with the library. Key features include pre-trained models, real-time interaction, and a user-friendly API. He also demonstrated its real-world applications and showcased a live image recognition demo using a webcam.
A heartfelt thank you to all our incredible speakers! Your expertise and engaging presentations were the driving force behind this event’s success. You made every session not just informative but truly inspiring. We deeply appreciate the time, passion, and energy you brought to the table, making this meetup an unforgettable experience for all!
What a day! The Front-End Meetup, organized by the Front-End Meetup Group and sponsored by Perficient, was a valid showcase of the future of web development. From exploring Micro Front-End architecture to hands-on sessions with cutting-edge tools like GitHub Copilot and ml5.js, we unlocked new ways of thinking, building, and collaborating. It was a day that reinforced the power of staying curious, connected, and forward-thinking in an ever-evolving industry.
At Perficient, we pride ourselves on being different. Our commitment to innovation and knowledge-sharing sets us apart as a company that doesn’t just react to trends but actively drives them. We continuously evolve with the latest trends and technologies and won’t stop doing that. We create environments where employees and tech enthusiasts can thrive, explore new ideas, and connect with one another in meaningful ways. Perficient isn’t just about delivering top-notch solutions; it’s about building an ecosystem where individuals and the company grow, adapt, and innovate.
The discussions, networking, and shared excitement for what’s to come in front-end development energized and inspired everyone.
Can’t wait for our next meetup! Until then, stay tuned for more updates and keep pushing the boundaries of what’s possible. The future of web development is bright, and we’re just getting started together!
Imagine you’re a skilled craftsman working in a massive warehouse. Every day, your task is to process thousands of unique items and ensure that each one is properly logged and stored. But let’s face it — mistakes happen. Sometimes an item gets mislabeled or damaged, and you need to know which ones to fix, and which ones made it safely through. In Salesforce, when working with a batch class that processes thousands or even millions of records, Database.SaveResult acts as your trusty supervisor, keeping track of which records succeeded, and which ones failed.
Let’s dive into the world of Database.SaveResult in batch classes with an easy-to-follow narrative that will make this topic clear and interesting, even for beginners.
Before jumping into batch classes, let’s first understand what Database.SaveResult is. Whenever you perform DML (Data Manipulation Language) operations like insert, update, or delete, Salesforce gives you feedback. This feedback tells you whether the operation was successful or if something went wrong. In the case of partial successes (when some records succeed while others fail), this feedback comes in the form of a Database.SaveResult object.
Think of it as a results sheet from an exam. For every record, it tells you:
Now, let’s see how this applies to batch classes.
A batch class is like a super-efficient worker in Salesforce. When you have a huge number of records to process (thousands or even millions), a batch class breaks the job into smaller, manageable chunks called batches. Each batch is processed separately, ensuring the system doesn’t get overwhelmed.
Here’s a simple example to paint the picture:
Let’s say your company sells products, and you want to update the stock levels of 100,000 items in your inventory. Instead of trying to update them all at once (and risking errors or timeouts), you use a batch class to process them in batches of, say, 200 records at a time.
In a batch class, you often perform DML operations inside the execute method. But what happens if some records fail to save? That’s where Database.SaveResult comes in. It acts like a detailed logbook, showing you exactly which records succeeded and why any failures occurred.
Here’s how it works step by step:
Here’s an example to demonstrate how to use Database.SaveResult in a batch class:
public class UpdateAccountBatch implements Database.Batchable<SObject>, Database.Stateful { private List<Id> errorIds = new List<Id>(); public Database.QueryLocator start(Database.BatchableContext bc) { // Query for accounts to update return Database.getQueryLocator('SELECT Id, AnnualRevenue FROM Account'); } public void execute(Database.BatchableContext bc, List<Account> scope) { try { // Update accounts with new annual revenue for (Account acc : scope) { acc.AnnualRevenue = acc.AnnualRevenue != null ? acc.AnnualRevenue * 1.1 : 100000; } // Perform DML and capture results Database.SaveResult[] results = Database.update(scope, false); // Process results for (Integer i = 0; i < results.size(); i++) { if (!results[i].isSuccess()) { errorIds.add(scope[i].Id); // Store failed record Ids for (Database.Error err : results[i].getErrors()) { System.debug('Failed to update Account Id: ' + scope[i].Id + ' Error: ' + err.getMessage()); } } else { System.debug('Successfully updated Account Id: ' + scope[i].Id); } } } catch (Exception e) { System.debug('Unexpected error occurred: ' + e.getMessage()); } } public void finish(Database.BatchableContext bc) { if (!errorIds.isEmpty()) { String subject = 'Batch Job Completed with Errors'; String body = 'The batch job encountered errors while processing the following Account IDs:\n' + String.join(errorIds, ', '); // Send email notification Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage(); email.setToAddresses(new String[] { '[email protected]' }); email.setSubject(subject); email.setPlainTextBody(body); Messaging.sendEmail(new Messaging.SingleEmailMessage[] { email }); } System.debug('Batch job finished. Error IDs: ' + errorIds); } }
Database.update(scope, false)
method allows partial success, meaning the system will try to save as many records as possible even if some fail.getErrors()
method of SaveResult. This helps identify and fix issues without reprocessing all records.You might wonder, why not just use standard DML operations like insert
or update
without worrying about SaveResult? The answer lies in reliability and flexibility:
Database.update()
with SaveResult, you can save valid records while logging errors for invalid ones.1. What happens if I don’t handle SaveResult errors?
Errors will still occur, but you won’t have visibility into what failed or why. This can make debugging very difficult.
2. Can I retry failed records automatically?
Yes, you can capture the failed records and rerun them in another batch job or after fixing the issues.
3. Is Database.SaveResult limited to batch classes?
No, it can be used in any Apex context where DML operations are performed.
Database.SaveResult is a powerful tool for handling bulk DML operations in Salesforce, especially in batch classes. By understanding how to use it effectively, you can ensure reliable, scalable, and user-friendly data processing.
Think of it as your record-by-record performance review sheet. With it, you’ll never be in the dark about what went wrong — or right — in your batch jobs. Start experimenting today and unlock the true potential of your Salesforce data processing!
]]>Have you ever wondered about integration in API development or how to become familiar with the concept?
In this blog, we will discuss one of the integration technologies that is very easy and fun to learn, IBM ACE.
IBM ACE stands for IBM App Connect Enterprise. It is an integration platform that allows businesses to connect various applications, systems, and services, enabling smooth data flow and communication across diverse environments. IBM ACE supports the creation of Integrations using different patterns, helping organizations streamline their processes and improve overall efficiency in handling data and business workflows.
Through a collection of connectors to various data sources, including packaged applications, files, mobile devices, messaging systems, and databases, IBM ACE delivers the capabilities needed to design integration processes that support different integration requirements.
One advantage of adopting IBM ACE is that it allows current applications to be configured for Web Services without costly legacy application rewrites. By linking any application or service to numerous protocols, including SOAP, HTTP, and JMS, IBM ACE minimizes the point-to-point pressure on development resources.
Modern secure authentication technologies, including LDAP, X-AUTH, O-AUTH, and two-way SSL, are supported through MQ, HTTP, and SOAP nodes, including the ability to perform activities on behalf of masquerading or delegated users.
Refer to Getting Started with IBM ACE: https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-get-started-app-connect
For installation on Windows, follow the document link below. Change the IBM App Connect version to 12.0 and follow along: https://www.ibm.com/docs/en/app-connect/11.0.0?topic=software-installing-windows
This is what an IBM ACE toolkit interface looks like. You can see all the applications/APIs and libraries you created during application development. In Pallete, you can see all the nodes and connectors needed for application development.
Learn more about nodes and connectors: https://www.ibm.com/docs/en/app-connect/12.0?topic=development-built-in-nodes
IBM ACE provides flexibility in creating an Integration Servers and Integration Node where you can deploy and test your developed code and application, which you can do with the help of mqsi commands.
In this introductory blog, we have explored IBM ACE and how to create a basic application to learn about this integration technology.
Here at Perficient, we develop complex, scalable, robust, and cost-effective solutions using IBM ACE. This empowers our clients to improve efficiency and reduce manual work, ensuring seamless communication and data flow across their organization.
Contact us today to explore more options for elevating your business.
]]>Experience Cloud (previously called Salesforce Community Cloud) is a tool that helps businesses create websites and apps where different people like customers, partners, and employees.
It allows companies to create branded communities, portals, websites, and application, all while leveraging Salesforce’s powerful CPM capabilities.
Experience Cloud enables businesses to create highly personalized experiences for users. This is achieved by displaying different content based on users’ preferences, behaviors, or data.
Another major benefit of Experience Cloud is its seamless integration with other Salesforce products, such as Sales Cloud and Service Cloud. This integration helps businesses streamline their processes and deliver better overall customer experiences.
Experience Cloud offers both pre-built templates and customization options. This makes it easier for businesses to launch portals or customer service sites quickly while also allowing room for tailoring the platform to their specific needs.
Experience Cloud fosters teamwork and interaction. It provides a variety of tools for users to ask questions, share content, and collaborate with one another, enhancing the overall experience.
Ensuring that the right people have access to the right information is critical. With Experience Cloud, businesses can set different access levels for various users.
In today’s fast-paced world, mobile access is key. Experience Cloud is designed to work seamlessly across mobile devices, so users can access their data from anywhere.
Managing online communities is made simple with Experience Cloud’s robust set of community management features. These tools allow you to monitor user activity, moderate content, and measure engagement.
Experience Cloud excels at connecting with external tools and systems, allowing businesses to leverage data from a variety of sources.
With powerful analytics tools, Experience Cloud helps businesses track user behavior and gain insights into how well digital experiences are performing.
For developers, Experience Cloud offers the flexibility to create custom features and components that enhance the community experience.
Experience Cloud is designed to grow with your business. Whether you’re a small startup or a large enterprise, the platform offers the flexibility and power needed to support your needs.
Alos, visit the articles below:
]]>Kristen Quick, Director at Perficient, shared her insights on the transformative potential of Salesforce Life Sciences Cloud for pharmaceutical and med tech organizations, highlighting its ability to drive innovation and improve outcomes.
As the healthcare landscape continues to evolve, innovative solutions like Life Sciences Cloud are becoming essential for driving efficiency, improving patient care, and accelerating time to market:
Kristen Quick is a director in Perficient’s Salesforce practice, focusing on the healthcare portfolio. With a background in marketing at a rural community hospital, Kristen has a deep understanding of the patient experience and the business of providing great care. Her passion lies in orchestrating seamless, personalized, and memorable experiences for patients, caregivers, and providers through advanced technology.
Kristen describes Salesforce Life Sciences Cloud as a “healthy disruption” in the industry. For the past seven years, a dominant market solution has led the way for Life Sciences engagement, but now Salesforce introduces competition that drives innovation and new ways of working. What sets Life Sciences Cloud apart is its end-to-end solution, covering clinical, medical, commercial, and patient needs. It offers technical capabilities such as data access, native integrations, generative AI, mobile capabilities, and metadata, all designed to meet specific industry use cases out of the box.
Life sciences organizations face several challenges in digital transformation, including legacy systems, siloed data, regulatory compliance, and clinical trial modernization. Kristen emphasizes when having Data Cloud included in the platform provides a significant advantage in overcoming these challenges.
Salesforce’s commitment to trust and security is evident in the extra precautions taken with this cloud, such as an industry-compliant data model and the Einstein Trust layer, which ensures data safety and compliance.
The power of Life Sciences Cloud is just beginning. Kristen is particularly excited about the upcoming advancements in the commercial operations suite, which will enhance customer engagement capabilities for healthcare professionals and provide powerful tools for sales reps. These features will contribute to clinical, medical, and commercial ROI by accelerating products to market and getting patients the therapies they need faster.
Perficient stands out as a unique partner with both breadth and depth of industry experience and Salesforce expertise. Kristen explains that Perficient starts every engagement by understanding the client’s strategy and business outcomes, creating an incremental plan that marries the “why” with the “how.” This approach ensures that clients can fully leverage the capabilities of Life Sciences Cloud to achieve their goals.
Salesforce Life Sciences Cloud is poised to revolutionize the pharmaceutical and med tech industries by providing a comprehensive, secure, and innovative platform. With the support of experienced partners like Perficient, organizations can navigate the complexities of digital transformation and unlock new levels of efficiency and patient care. Stay tuned for the full video interview with Kristen Quick to learn more about the exciting possibilities of Life Sciences Cloud.
If you have any questions or would like to learn more about Agentforce, reach out to our Healthcare team. And stay tuned for the full video interview with Kristen Quick, where we dive deeper into the benefits and applications of Salesforce Life Sciences Cloud.
]]>It’s that time of year when everyone comes out with their trends to watch for 2025. While it may seem a bit of a cliche, 2025 has several innovations taking hold that should prove exciting for anyone willing to grab the opportunity.
The way businesses buy and sell is changing faster than ever, and B2B companies are at a tipping point. It’s a segment of business that is often slow to change and adopt new practices. However, more organizations are moving away from traditional processes, embracing online platforms to streamline operations, expand their reach, and deliver better customer experiences. This shift isn’t just a trend—it’s a revolution. Recent research shows that the global B2B e-commerce market is expected to surge from $28.86 trillion in 2025 to $60.49 trillion by 2030, growing at an impressive annual rate of 15.95% (Mordor Intelligence).
These numbers make it clear that businesses that fail to adapt risk being left behind. To stay competitive, it’s critical to understand the key trends shaping the future of B2B e-commerce. In this article, we’ll discuss four trends for B2B in 2025 and how businesses should use them to drive growth.
Let’s face it—personalization isn’t just a buzzword anymore; it’s a game-changer quickly becoming a requirement, especially in the B2B world. Buyers today don’t just expect personalized experiences—they demand them. Long gone are the days when a one-size-fits-all catalog could satisfy your clients. Modern B2B customers want solutions that feel tailor-made for their business and deliver them seamlessly.
Hyper-personalization takes this concept to the next level. Businesses can offer customized product recommendations, dynamic pricing, and personalized purchasing portals by leveraging AI and data analytics. Imagine being able to present each client with a tailored experience based on their buying history, preferences, and unique business needs. It’s not just about making sales but building trust and long-term relationships.
If you’re not sure where to start, the key is data. Drive deep into your customer data to uncover patterns and preferences. Then, use that information to craft experiences that feel truly individualized. AI-powered platforms make this easier than ever, helping you predict client needs and meet them proactively.
Want to explore this topic in more detail? Check out my previous blog on Micro-Moments in E-Commerce, where I break down the strategies and tools you can use to make personalization a cornerstone of your business.
Buyers expect more than just a seamless shopping experience—they expect consistency, no matter how or where they engage with your business. Think about your purchasing habits. Whether browsing on your phone, checking inventory on your laptop, or following up with a sales rep in person, you expect everything to align. Your clients are no different. They want to start a transaction on one channel and finish it on another without skipping a beat.
For example, a buyer researching your product catalog online adds items to their cart but pauses to confirm specs with a colleague in the warehouse via a mobile device. Later, they call their account manager to finalize the purchase. If your system isn’t fully integrated, they’ll need to repeat information or deal with errors, which is a frustration no one wants.
Omnichannel excellence means ensuring that every touchpoint—your e-commerce platform, mobile experience, customer portal, or sales team—works flawlessly. This requires more than technology; it’s about aligning your processes and teams to deliver a unified experience.
Here’s the good news: Omnichannel strategies drive serious results when done right. Research shows that companies with strong omnichannel engagement retain 89% of their customers, compared to just 33% for those with weaker strategies. This retention can translate into significant revenue growth in B2B, where relationships are king.
To get started, focus on unifying your systems. Ensure your CRM, e-commerce platform, and inventory management tools speak the same language. And don’t forget your team—sales, support, and marketing must be aligned to provide consistent messaging and service across channels.
Businesses are turning away from a single implementation platform to headless commerce to keep up with growing demands and shifting buyer expectations. If you’re unfamiliar with the concept, headless commerce is about separating the front end—the part your customers interact with—from the back-end systems that manage inventory, orders, and data. You’ll often hear this referred to as a “best in category” concept. This separation allows for customization and speed that traditional, monolithic platforms can’t match.
Why does this matter for B2B? Your buyers expect tailored experiences that adapt to their needs; headless commerce makes delivering that possible. For example, imagine offering each of your major clients a custom storefront where they can see products, pricing, and order histories unique to their account—all without overhauling your entire back-end system.
The numbers back up the importance of this trend. The global headless commerce market is projected to grow at an impressive CAGR of 22.5%, reaching $13.2 billion by 2035 (Modern Diplomacy). By 2025, 35% of businesses are expected to adopt headless platforms to meet the demand for more personalized, scalable solutions.
For B2B businesses, headless commerce isn’t just about keeping up; it’s about getting ahead. The ability to quickly update your user experience, scale as your business grows, and seamlessly integrate with third-party tools puts you in a position to outpace competitors while delivering exceptional service to your buyers.
Going headless is not without risk and should not be undertaken lightly. The key to a good headless strategy is to accept that with greater flexibility comes an elevated cost of ownership. I’m not just referring to a monetary cost of ownership—though that is part of it—but also to the investment of your team members’ time in managing multiple systems.
When you think of social commerce, it’s easy to picture consumer brands selling trendy products on Instagram or Facebook. But here’s the thing: B2B companies are catching on and social commerce is quickly becoming a powerful tool for engaging clients, building relationships, and even driving sales. In fact, 75% of B2B buyers now use social media to inform their purchasing decisions. Platforms like LinkedIn, Twitter, and even Facebook aren’t just for networking anymore—they’re where decision-makers research solutions and connect with potential partners. (Demand Sage)
The rise of social commerce in B2B makes perfect sense. Today’s buyers, just like consumers, value authenticity and accessibility. They want to see real-world applications of your products or services, hear success stories from peers, and interact with your brand personally and immediately. Imagine hosting a LinkedIn Live demo of your latest software, where potential clients can ask questions in real time or share customer testimonials on Twitter that spark new inquiries. These interactions don’t just showcase your offerings—they build trust and credibility.
And the momentum behind social commerce is undeniable. Nearly half of all brands, including those in the B2B space, plan to increase their social commerce investments in the coming year. Meanwhile, the global social commerce market is projected to grow from $1.52 trillion in 2025 to an incredible $5.32 trillion by 2030, at a CAGR of 28.53%. (Mordor Intelligence)
If your B2B strategy doesn’t include social commerce, now is the time to rethink your approach. Engaging with clients where they already spend their time online is no longer optional—it’s essential for staying relevant and competitive. As 2025 approaches, leveraging social platforms can help you build meaningful connections, showcase your expertise, and drive growth in a fresh and forward-thinking way. Out of the four trends we’ve discussed so far, I see this one as requiring the lowest lift to get started and the highest amount of pushback in an industry known to be slow to adopt new marketing methods. However, the data supports this as a solid growth opportunity.
2025 is shaping up to be an incredible year for B2B e-commerce. With market share growing and new technologies reshaping how businesses connect with their customers, it’s an exciting time to be part of this space. Trends like hyper-personalization, omnichannel experiences, and headless commerce are more than just buzzwords—they’re the key to staying competitive and thriving in a rapidly evolving digital landscape.
But with so much change on the horizon, the question isn’t just about recognizing these trends—it’s about acting on them. How will your business leverage the opportunities that 2025 brings? Whether creating seamless buying experiences, building trust through social platforms, or reimagining your digital infrastructure, the growth potential is enormous.
At Perficient, we specialize in helping businesses like yours capitalize on the latest B2B e-commerce trends. Our experts can guide you through the complexities of digital transformation and equip you with the tools and strategies to succeed in this dynamic market. Let’s work together to position your business for success in 2025 and beyond.
Ready to take the next step? Reach out to us today and discover how we can help you lead the way in B2B e-commerce.
]]>In this blog post, I will share my journey of developing a Python-based solution to remove strikethrough text from PDFs. This solution is specifically designed for PDFs where strikethrough is applied as a style rather than an annotation.
Strikethrough text in PDFs can be tricky to handle, mainly when applied as a style. Standard PDF manipulation libraries often fall short in these cases. Determined to find a solution, I leveraged Python to create a practical approach.
The solution involves three main steps: converting the PDF to a DOCX file, removing the strikethrough text from the DOCX file, and converting the modified DOCX file back to a PDF.
Before diving into the code, install the necessary Python dependencies. You will need:
• pdf2docx for converting PDF to DOCX
• python-docx for manipulating DOCX files
• docx2pdf for converting DOCX back to PDF
You can install these dependencies using pip:
pip install pdf2docx python-docx docx2pdf
The first step is to convert the PDF file to a DOCX file. This allows us to manipulate the text more easily. We use the pdf2docx library for this conversion. Here is the code for the conversion function:
from pdf2docx import Converter def convert_pdf_to_word(pdf_file, docx_file): """Convert PDF to DOCX format.""" try: cv = Converter(pdf_file) cv.convert(docx_file, start=0, end=None) cv.close() print(f"Converted PDF to DOCX: {pdf_file} -> {docx_file}") except Exception as e: print(f"Error during PDF to DOCX conversion: {e}") sys.exit(1)
In this function, we create an instance of the Converter class, passing the pdf_file as an argument. The convert method of the Converter class is called to perform the conversion, and the close method is called to release any resources the converter uses. If the conversion is successful, a message is printed indicating the conversion. If an error occurs, an exception is caught, and an error message is printed.
Once we have the DOCX file, we can remove the strikethrough text. This step involves iterating through the paragraphs and runs in the DOCX file and checking for the strikethrough style. We use the python-docx library for this task. Here is the code for the strikethrough removal function:
from docx import Document def remove_strikethrough_text(docx_file): """Remove all strikethrough text from a DOCX file.""" try: document = Document(docx_file) modified = False for paragraph in document.paragraphs: for run in paragraph.runs: if run.font.strike: print(f"Removing strikethrough text: {run.text}") run.text = '' modified = True if modified: modified_docx_file = docx_file.replace('.docx', '_modified.docx') document.save(modified_docx_file) print(f"Strikethrough text removed. Saved to: {modified_docx_file}") return modified_docx_file else: print("No strikethrough text found.") return docx_file except Exception as e: print(f"Error during strikethrough text removal: {e}") sys.exit(1)
In this function, we create an instance of the Document class, passing the docx_file as an argument. We iterate through each paragraph in the document and then through each run within the section. If the strike attribute of the run’s font is True, we print a message indicating removing the strikethrough text and set the run’s text to an empty string. If strikethrough text was removed, we save the modified document to a new file with _modified appended to the original filename. If no strikethrough text was found, we return the original DOCX file.
The final step is to convert the modified DOCX file back to a PDF file. This ensures that the strikethrough text is removed in the final PDF. We use the docx2pdf library for this conversion. Here is the code for the conversion function:
from docx2pdf import convert def convert_docx_to_pdf(docx_file, output_pdf): """Convert DOCX back to PDF format.""" try: convert(docx_file, output_pdf) print(f"Converted DOCX to PDF: {docx_file} -> {output_pdf}") except Exception as e: print(f"Error during DOCX to PDF conversion: {e}") sys.exit(1)
We call this function the convert function, passing the docx_file and output_pdf as arguments to perform the conversion. If the conversion is successful, a message is printed indicating the conversion. If an error occurs, an exception is caught, and an error message is printed.
The following block of code is the main execution section of the script. It starts by checking if the script is being run directly. It then verifies that the correct number of command-line arguments is provided and that the specified PDF file exists. If these conditions are met, the script defines intermediate file paths and performs the three main steps: converting the PDF to a DOCX file, removing strikethrough text from the DOCX file, and converting the modified DOCX back to a PDF. After completing these steps, it prints the location of the modified PDF file and cleans up any intermediate files. If errors occur during execution, they are caught and printed, and the script exits gracefully.
if __name__ == "__main__": if len(sys.argv) != 2: sys.exit(1) pdf_file = sys.argv[1] if not os.path.exists(pdf_file): print(f"Error: File not found - {pdf_file}") sys.exit(1) try: # Define intermediate file paths base_name = os.path.splitext(pdf_file)[0] temp_docx_file = f"{base_name}.docx" modified_docx_file = f"{base_name}_modified.docx" output_pdf_file = f"{base_name}_modified.pdf" # Step 1: Convert PDF to DOCX convert_pdf_to_word(pdf_file, temp_docx_file) # Step 2: Remove strikethrough text final_docx_file = remove_strikethrough_text(temp_docx_file) # Step 3: Convert modified DOCX back to PDF convert_docx_to_pdf(final_docx_file, output_pdf_file) print(f"Modified PDF saved to: {output_pdf_file}") # Clean up intermediate DOCX files if os.path.exists(temp_docx_file): os.remove(temp_docx_file) if final_docx_file != temp_docx_file and os.path.exists(final_docx_file): os.remove(final_docx_file) except Exception as e: print(f"Error: {e}") sys.exit(1)
import sys import os from pdf2docx import Converter from docx import Document from docx2pdf import convert def convert_pdf_to_word(pdf_file, docx_file): """Convert PDF to DOCX format.""" try: cv = Converter(pdf_file) cv.convert(docx_file, start=0, end=None) cv.close() print(f"Converted PDF to DOCX: {pdf_file} -> {docx_file}") except Exception as e: print(f"Error during PDF to DOCX conversion: {e}") sys.exit(1) def remove_strikethrough_text(docx_file): """Remove all strikethrough text from a DOCX file.""" try: document = Document(docx_file) modified = False for paragraph in document.paragraphs: for run in paragraph.runs: if run.font.strike: print(f"Removing strikethrough text: {run.text}") run.text = '' modified = True if modified: modified_docx_file = docx_file.replace('.docx', '_modified.docx') document.save(modified_docx_file) print(f"Strikethrough text removed. Saved to: {modified_docx_file}") return modified_docx_file else: print("No strikethrough text found.") return docx_file except Exception as e: print(f"Error during strikethrough text removal: {e}") sys.exit(1) def convert_docx_to_pdf(docx_file, output_pdf): """Convert DOCX back to PDF format.""" try: convert(docx_file, output_pdf) print(f"Converted DOCX to PDF: {docx_file} -> {output_pdf}") except Exception as e: print(f"Error during DOCX to PDF conversion: {e}") sys.exit(1) if __name__ == "__main__": if len(sys.argv) != 2: sys.exit(1) pdf_file = sys.argv[1] if not os.path.exists(pdf_file): print(f"Error: File not found - {pdf_file}") sys.exit(1) try: # Define intermediate file paths base_name = os.path.splitext(pdf_file)[0] temp_docx_file = f"{base_name}.docx" modified_docx_file = f"{base_name}_modified.docx" output_pdf_file = f"{base_name}_modified.pdf" # Step 1: Convert PDF to DOCX convert_pdf_to_word(pdf_file, temp_docx_file) # Step 2: Remove strikethrough text final_docx_file = remove_strikethrough_text(temp_docx_file) # Step 3: Convert modified DOCX back to PDF convert_docx_to_pdf(final_docx_file, output_pdf_file) print(f"Modified PDF saved to: {output_pdf_file}") # Clean up intermediate DOCX files if os.path.exists(temp_docx_file): os.remove(temp_docx_file) if final_docx_file != temp_docx_file and os.path.exists(final_docx_file): os.remove(final_docx_file) except Exception as e: print(f"Error: {e}") sys.exit(1)
Execute the script by running the following command, replacing it with the path to your PDF file:
python <script_name>.py <pdf_file_path>
This Python-based solution effectively removes strikethrough text from PDFs by leveraging the strengths of the pdf2docx, python-docx, and docx2pdf libraries. By converting the PDF to DOCX, modifying the DOCX, and converting it back to PDF, we can ensure that the strikethrough text is removed without affecting other content. This approach provides a robust and efficient method for handling strikethrough text in PDFs, making your documents clean and professional.
Meet Neha Pasi, a lead technical consultant based in Nagpur, India, whose exceptional contributions, agility, precision, and guidance have set an example for her Sitecore development teams. Neha embraces Growth for Everyone and continuously strives to further her knowledge by taking courses, earning certifications, and applying new concepts to improve processes.
She embodies Perficient’s core values by consistently going above and beyond to mentor new colleagues and share her knowledge. In honor of this, Neha received recognition as a Perficient 2024 Excellence Award recipient, one of Perficient’s highest achievements. Continue reading to learn more about Neha’s responsibilities, career advice, and how she is enhancing Perficient’s Sitecore practice while embracing a culture of continuous learning and collaboration.
As a Lead Technical Consultant, I work on Sitecore development projects blending hands-on development, technical leadership, team management, mentoring, and collaboration. My typical day starts with a cup of hot black coffee and stand-up meetings with team members to align on progress, plan the day, and address any blockers.
Alongside guiding my team, I actively engage in development. Whether building features based on requirements, creating custom modules, or resolving critical issues, I’m committed to ensuring smooth, scalable implementations. Coding is a significant part of my role, and I oversee the technical aspects through code reviews, troubleshooting, and solution design to maintain high-quality deliverables. I collaborate closely with project team members to ensure seamless coordination. I also work with senior colleagues and experts, constantly learning from them to enhance my skills. Since our projects often involve international teams, I regularly work with people from different cities and countries to meet shared objectives.
Beyond project responsibilities, I actively engage in Sitecore BU-level and office activities, such as conducting interviews, leading knowledge-sharing sessions, and participating in fun activities that foster both personal growth and team spirit.
For clients, I ensure the website features we build through Sitecore not only meet requirements but also provide scalable and innovative solutions to enhance the digital presence and business value. I actively identify and address challenges, suggest improvements, and guide my team to deliver high-quality features on time, building trust and long-term partnerships with clients.
For colleagues and my team, I foster a supportive and collaborative work environment. I mentor team members, help them navigate technical challenges, and ensure workloads are well-balanced. I also encourage continuous learning and professional growth, helping them stay updated with the latest technologies and best practices. Additionally, I am actively involved in the Women in Technology Employee Resource Group, organizing sessions on topics related to women’s empowerment and general professional growth.
Within the community, I run the Sitecore User Group Nagpur with three other colleagues where we conduct monthly technical sessions to share knowledge and foster learning around Sitecore.
In 2017, I started my career with Perficient as an intern after graduating from college. Perficient has played a pivotal role in shaping the professional I am today. All the technology skills I’ve developed have stemmed from the projects I’ve tackled and the talented people I’ve collaborated with. This journey from intern to Lead Technical Consultant has been both rewarding and gratifying, filled with valuable learning experiences every step of the way.
One of my proudest accomplishments has been speaking at two Sitecore User Group Conferences India (SUGCON) in 2023 and 2024 alongside my colleague and mentor. It was a thrilling experience that allowed me to share knowledge with the community, connect with other experts, and represent Perficient in the Indian Sitecore community.
I have also earned three Sitecore certifications: .NET 10 Developer, XM Cloud, and OrderCloud Developer. This strengthened my technical expertise and enabled me to take on more complex challenges. A particularly proud moment was being recognized as a Perficient 2024 Excellence Award winner, a huge honor that acknowledged my hard work and contributions.
I’ve learned the power of continuous learning. A large part of my job is staying updated on new technologies and trends. I spend time exploring new tools, attending training sessions, and earning certifications.
One of the most rewarding parts is showing my family and friends the websites or features I’ve worked on. Seeing their excitement and appreciation makes all the effort feel truly worthwhile, and it’s a great way to share the impact of my work with them. The emphasis on professional development, including obtaining certifications and attending training sessions, has reinforced the importance of staying current in a rapidly evolving industry.
Learn More: Perficient Encourages Our Colleagues’ Professional Development
I appreciate the value of collaboration and teamwork. Working alongside talented colleagues has shown me that diverse perspectives lead to innovative and quality solutions. I’ve also realized that there’s nothing you cannot achieve with determination and the right support. This belief has motivated me to set ambitious goals and strive for excellence, knowing that I have the resources and people around me to help turn those goals into reality.
Perficient is truly one of the best companies to launch your professional journey. You’ll find ample visibility and support, which are crucial for your growth. The recognition you receive for your contributions is motivating, there are various opportunities for learning and advancement, and the culture here is amazing.
Our colleagues would do everything in their capacity to help you navigate challenges and succeed. Take advantage of the resources available to you, seek mentorship, and don’t hesitate to ask questions. Embrace every opportunity to learn and grow — it’s a foundation that will serve you well throughout your career.
Perficient’s People Promise is why I’m #ProudlyPerficient. We are challenged with new opportunities, supported through obstacles, endorsed and championed for our skills, and all our small and big wins are acknowledged and celebrated. Each of these elements contributes to a positive and fulfilling work environment that motivates me every day.
What keeps me at Perficient is everything the company embodies and stands for. It’s the people, culture, support, opportunities, and growth that make me want to continue my journey here. I’m continually amazed by the truly talented colleagues I collaborate with daily. Even though I haven’t met my U.S. colleagues in person, they are exceptionally supportive, amiable, and personable, fostering a strong sense of understanding, respect, and value in our interactions.
I shatter boundaries by continuously challenging myself to grow, both personally and professionally. My journey at Perficient reflects a commitment to taking on new challenges, acquiring new skills, and stepping out of my comfort zone.
I break barriers by balancing both technical and team management responsibilities when leading Sitecore projects. I believe that no goal is unattainable, which keeps me striving to advance while also exploring opportunities to work on-site and gain international experience.
Shattering boundaries isn’t just about individual success — it’s about empowering others, recognizing achievements, and celebrating collective wins. The supportive, inclusive culture of Perficient fuels my growth and allows me to lead by example.
Outside of work, I focus on things that add meaning and balance to my life. Staying fit is important to me, and I’m very particular about maintaining a healthy diet. It’s something I actively work on to feel my best physically and mentally.
Recently, I adopted a dog, which has been an incredibly rewarding experience. Spending time with him has quickly become one of my favorite things to do. Whether it’s taking him for walks or just enjoying his company at home, my dog brings a lot of joy and calm to my everyday routine. Taking care of him has also helped me unwind, while adding a new sense of responsibility and happiness to my life.
It’s no secret our success is because of our people. No matter the technology or time zone, our colleagues are committed to delivering innovative, end-to-end digital solutions for the world’s biggest brands, and we bring a collaborative spirit to every interaction. We’re always seeking the best and brightest to work with us. Join our team and experience a culture that challenges, champions, and celebrates our people.
Visit our Careers page to see career opportunities and more!
Go inside Life at Perficient and connect with us on LinkedIn, YouTube, Twitter, Facebook, TikTok, and Instagram.
]]>Healthcare content marketing requires time, effort and strong strategy — three resources that are always in demand within healthcare organizations (HCOs). Creating high-quality content that resonates with your audiences means figuring out what those audiences want and showing why your team is the best choice to help them. A messaging matrix can play a key role in that work.
At first glance, a messaging matrix is a simple-looking table that outlines key areas your healthcare messaging should address with your consumers. But look a little deeper, and you’ll see that this unassuming document has layers upon layers of complex utility for your HCO’s marketing team .
Perficient’s healthcare experts know what it takes to create an effective, successful messaging matrix for your outreach efforts. Let’s go over the components of a strong healthcare messaging matrix together, or feel free to contact us for more information.
Our healthcare personas and journey maps offer a deep dive into what consumers are looking for from HCOs like yours. But all too often, we’ve seen clients take these valuable insights and stick them on the digital shelf, rather than taking the lessons they provide and putting them to use. A messaging matrix can help your team translate your consumer personas and their unique healthcare journeys into clear, discrete content touchpoints.
By identifying scenarios that map to milestones in a persona’s journey with your HCO, a messaging matrix can help you understand:
Your messaging matrix is one way your team can continue to create long-term, ongoing and demonstrable value from your strategy efforts.
Good content strategy depends on the consistency of your messaging. You may have a fantastic content creator on your team. But if that creator is out of line with your strategy, or if the rest of your team isn’t aligned with the messaging of your high performers, then you’ll likely have problems with your consumer touchpoints.
Your content likely comes from many sources: your own team, strategic partners like us, other marketing teams within your organization, other vendors, freelancers and so on. But — and this is key — your consumers shouldn’t be able to tell these disparate players apart. Consistent messaging means you speak in one clear, distinct, on-brand voice, no matter who’s conceptualizing the message.
In addition to resources like your voice, tone and style guide and healthcare writing training for your team members, a messaging matrix can help keep your various internal and external teams aligned as they present a consistent, high-quality message at every step, no matter where they may sit or whom they’re talking to.
I’ve written thousands of pieces of content over my career, and I can comfortably say from experience that I still get intimidated sometimes when I’m starting from a blank document on my screen. Even when given a thoughtful creative brief, the idea of reaching healthcare consumers and helping guide them to a conversion and beyond can be a lot to contend with when I don’t have much to go on.
But with a messaging matrix, you can tailor the message to meet the needs of the audience members you’re trying to reach. You can use language that will resonate with them. You can make sure to include key points that they’re searching for. By having key message points detailed, you can help ensure that campaigns carry those messages through for a consistent voice and experience, from the first outreach campaign through long-term nurture campaigns.
Plus, if you find yourself constantly creating content for a key scenario for one or more of your personas, you can update the messaging matrix to account for that scenario. Not only can that make your individual job easier, but it can also help ensure your team members handle the need the same way down the road.
Many of our clients are laser-focused on pulling healthcare consumers down the funnel to conversion — whether that’s finding care, choosing a healthcare plan or purchasing a medical device. That’s natural. Conversion is a key metric and one that’s crucial for measuring the success of marketing efforts.
But conversion isn’t the point at which your content marketing efforts should stop. In fact, it’s only about halfway through the content marketing cycle, because it’s only about halfway through the healthcare decision-making process. The remaining parts of the process consumers use to make and support healthcare decisions require continued check-ins and support at key milestones even after conversion.
Our healthcare strategy team uses the Transtheoretical Model often to inform our recommendations. As you can imagine, many HCOs focus their efforts on efforts up to the Preparation stage — the point at which the consumer is ready to do something and the organization’s marketing efforts can influence the consumer’s decision.
As we often note, however, a complete content marketing strategy often involves nurture campaigns, targeted content and other marketing materials geared toward supporting the consumer through the Action and Maintenance stages. These often aren’t rigid, and your HCO can lose consumers if they feel like they must navigate them on their own. But your messaging matrix can and should include scenarios that help the consumer feel understood and supported as they continue their journey.
A messaging matrix that considers the healthcare consumer’s entire decision-making cycle can:
Our healthcare and life sciences strategy team members understand how to reach consumers with messages that resonate at every stage. And we know how to craft a messaging matrix that will fuel your team’s content marketing efforts with real results.
Contact us to learn more about the role a healthcare messaging matrix can play in your strategy and outreach.
]]>After setting up VBA in Excel, you can start automating tasks and creating your macros. This blog will guide you through what comes next after the setup process—writing, running, and debugging VBA code in Excel.
Debugging and error handling are crucial for writing effective and reliable VBA (Visual Basic for Applications) code. It helps you identify issues and ensure your macros run smoothly. These practices ensure your code runs as intended and gracefully handles unexpected scenarios. In this blog, we’ll explore tools for debugging VBA code effectively and techniques for robust error handling, providing practical examples to make the concepts relatable and actionable.
Breakpoints allow you to pause code execution at specific lines, enabling you to inspect variable values and program flow. To set a breakpoint, click in the margin next to the code line or press F9. When the code execution stops, you can analyze what’s happening.
Tip: Combine breakpoints with the Step-Into (F8) feature to execute the code line by line.
The Immediate Window is a versatile tool where you can print variable values and test code snippets without running the entire program. Use Debug. Print to output values or messages to the Immediate Window.
Example:
VBA highlights syntax errors in red and runtime errors with a debug prompt. Clicking “Debug” during runtime errors highlights the problematic line for further inspection.
Example Error: Dividing by zero triggers a runtime error.
This statement instructs VBA to ignore the error and move to the next line of code. Use it sparingly for non-critical errors.
Example:
Sub IgnoreError() On Error Resume Next Dim num As Integer num = 10 / 0 'Error ignored MsgBox "Code continues despite the error." End Sub
You can explore more on error handling in VBA by reviewing the Microsoft VBA API Overview, which provides a comprehensive guide to error handling and other VBA concepts.
Once you’ve set up Excel VBA, you can start writing, debugging, and optimizing your macros. The next steps after setup are crucial for mastering VBA and making your Excel workflows more efficient. Keep practicing, and as you gain more experience, you’ll unlock the full potential of Excel automation.
]]>Automate the deployment of Azure Kubernetes Service (AKS) using Terraform Cloud Workspaces. This ensures Infrastructure as Code (IaC) is centrally managed, and all changes are traceable.
2. Select a Workflow: Terraform Cloud offers three workflows:
a. CLI-Driven Workflow: Ideal for local Terraform runs but stores state in Terraform Cloud.
3. Generate and paste the API token:
a. Navigate to Account Settings > Tokens > Create API Token.
b. Copy the generated token (visible only once).
c. Paste the token into the terminal.
terraform init
command to download Azure provider plugins.
Write Terraform scripts for creating:
Write Terraform scripts for provisioning AKS.
Ensure the Terraform code is correct by running terraform plan
.
terraform init
to initialize plugins and modules. and select the workspace name.
2. Run terraform plan
to preview the deployment.
3.Run terraform apply
to deploy the resources based on the plan output.
]]>
The Agentforce World Tour has been a groundbreaking series of events, showcasing how Salesforce is revolutionizing work and customer service with AI-driven solutions. Here are some key takeaways from the recent sessions in New York, Atlanta, Dallas, and Chicago.
Harry Wilson, Senior Solutions Architect, highlighted how Salesforce is transforming internal business processes with Slack. By creating Agents and Workflows, Salesforce has significantly reduced internal emails related to travel approvals, expense reporting, and more. Additionally, Salesforce Maps enables the creation of balanced sales territories based on geographic distribution of leads, accounts, and historical revenue. This transformation is helping companies improve service and reduce costs.
Clay Phillips, Lead Technical Consultant, found the keynote and developer sessions particularly intriguing. Salesforce’s vision to reinvent the customer service experience is set to change how people interact with customer service. The introduction of developer-focused agents aims to help developers write more efficient code quickly. Agentforce is designed to be accessible to non-developers, making it a versatile tool for various roles within an organization.
The excitement around Agentforce is palpable, with many attendees eager to see how these innovations will impact their work. Perficient is poised to help customers leverage these tools to improve service and reduce costs. What aspect of Agentforce are you most excited about?
Salesforce Agentforce Readiness Assessment
Evaluate your AI readiness with Perficient’s comprehensive assessment. Identify key use cases, ensure data security, and develop a tailored roadmap for deploying Agentforce.
Discover tailored AI solutions and industry-specific use cases. Leverage pre-built templates and secure data access to enhance productivity across various business departments.
Salesforce Data Cloud Readiness Assessment
Assess your infrastructure and data readiness for Data Cloud adoption. Highlight areas for improvement and create a solid migration plan to ensure a smooth transition to the cloud.
These resources provide valuable insights and practical steps to help businesses successfully implement and leverage Agentforce and Data Cloud solutions.
Ready to start your Agentforce journey? Contact us today to learn more and get started!